C # Conversione di stringhe in uint
Domanda
Così, ho una stringa di 13 caratteri.
string str = "HELLOWORLDZZZ";
e ho bisogno di conservare questo come rappresentazione ASCII (hex) in una variabile uint. Come posso fare questo?
Soluzione
È possibile utilizzare Encoding.ASCII
.
GetBytes
per convertire la stringa a un array byte
con la codifica ASCII (ogni personaggio prendere uno byte
). Quindi chiamare BitConverter.ToUInt32
convertire tale matrice di byte a una uint
. Tuttavia, come @R. Bemrose notato nei commenti, un uint
è a soli 4 byte
s, quindi è necessario fare un po 'il partizionamento del vostro allineamento prima.
Altri suggerimenti
Dai un'occhiata alla Convert.ToUInt32(string, int)
. Ad esempio:
uint parsed = Convert.ToUInt32(str, 16);
uint.Parse(hexString, System.Globalization.NumberStyles.HexNumber);
Vedere il mio commento, ma se si desidera convertire solo una stringa ASCII a esadecimale, che è quello che ho il sospetto:
public string HexIt(string yourString)
{
string hex = "";
foreach (char c in yourString)
{
int tmp = c;
hex += String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString()));
}
return hex;
}
In questo modo convertire il vostro string
(con una rappresentazione Base 16) per un uint
.
uint val = Convert.ToUInt32(str, 16);
Ora credo di capire ciò che si desidera in un commento su bdukes risposta.
Se si desidera che il codice hex
per ogni carattere della stringa si può ottenere utilizzando LINQ.
var str = "ABCD";
var hex = str.Select(c => ((int)c).ToString("X"))
.Aggregate(String.Empty, (x, y) => x + y);
hex
sarà un 41424344
stringa