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?

È stato utile?

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 bytes, 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);

Credo che questo è il metodo che si desidera

Convert.ToUInt32(yourHexNumber, 16);

qui .

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top