Convertire una stringa di codici ascii rappresentante un long

domenica 20 aprile 2008 - 16.53

napoleone1981 Profilo | Newbie

Ciao a tutti,
sto implementando un protocollo di comunicazione che mi invia i dati in una stringa di codici ascii.

I dati sarebbero degli interi senza segno LSB first, quindi 4 byte, quindi 4 caratteri.

In VB 6 c'era la funzione copymemory per convertire questa stringa in un long, in C# come potrei fare??

aiedail92 Profilo | Expert

Ciao

con quattro byte puoi ottenere un long, ma sarà sempre nel range di un int: i long sono dati a 64 bit, quindi 8 byte, mentre gli int sono a 32 bit, 4 byte.

Per ottenere un int da un array di byte puoi usare la funzione BitConverter.ToInt32(), che ricava l'int da quattro byte consecitivi nell'array:

byte[] buffer = new byte[] { 0, 85, 170, 255 }; int valore = BitConverter.ToInt32(buffer, 0);

Quindi se hai una stringa di quattro caratteri, ottieni prima il corrispondente valore in bytes con Encoding.ASCII.GetBytes(), e quindi ricavi l'int nello stesso modo di prima:

byte[] buffer = Encoding.ASCII.GetBytes("_str"); int valore = BitConverter.ToInt32(buffer, 0);

Dimmi se ottieni il risultato che volevi o se ci sono problemi

Luca

napoleone1981 Profilo | Newbie

Ok, grazie... mi ero dimenticato di BitConverter!!

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5