2016-04-25 12 views
0

ich irgendwie „xxx“ auf Byte konvertieren müssen, aber ich habe AusnahmeConvert.ToByte konnten keine erkennbaren Ziffern finden

Eine nicht behandelte Ausnahme des Typs ‚System.FormatException‘ in aufgetreten mscorlib.dll

Zusätzliche Information: Konnte keine erkennbaren Ziffern finden.

Ist es möglich, "xxx" -Wert in Byte umzuwandeln?

byte tr = (byte)(Convert.ToByte("xxx", 16) << 4); 
+0

byte [] tr = Encoding.UTF8.GetBytes ("xxx") diese Arbeit gut, aber ich frage mich, wie kann ich diese Verschiebung anwenden 16) << 4); –

+1

Wenden Sie die Verschiebung danach an. Sie können es nicht in der Konvertierung anwenden. – chris579

+0

was Sie tun, ist das Konvertieren von xxx in 16 Basis zu Byte. Wir haben keine xxx in 16 Basis. – Mehrdad

Antwort

0

Es ist nicht möglich "xxx" in ein Byte zu konvertieren. Es ist einfach nicht die Darstellung irgendeines Bytes.

+0

byte [] tr = Kodierung.UTF8.GetBytes ("xxx"); aber mit diesem ich habe, dass x ist 120 –

+0

Welches ist ein gültiger Wert – chris579

0

Diese Zeile (Convert.ToByte("xxx", 16) << 4) gibt integer zurück, die beim Analysieren in byte nicht in eine Zeichenfolge umgewandelt werden kann, deshalb wirft sie die System.FormatException.

Aber es gibt bereits ein gutes Beispiel dafür, wie man den String in byte [] umwandelt.

static byte[] GetBytes(string str) 
{ 
    byte[] bytes = new byte[str.Length * sizeof(char)]; 
    System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length); 
    return bytes; 
} 

Source of Example

+0

als ich bekam 120,0,120,0,120,0, aber ich mit Encoding.UTF8.GetBytes ("xxx") kann ich 120.120.120 so vielleicht ist besser Encoding.UTF8 .GetBytes ("xxx")? –

+0

@ IrmantasMedeiis Es liegt an Ihnen, der einzige Vorteil meines Ansatzes ist, dass Sie die Daten trotzdem erhalten und die ursprüngliche Zeichenkette rekonstruieren können, selbst wenn sie eine [ungültige Daten] enthält (http://www.cl.cam.ac.uk/ ~ mgk25/ucs/examples/UTF-8-test.txt) weil es nur auf die Bytes schaut. –

0

Wenn Sie einen String in ein Byte-Array ändern:

byte[] toBytes = Encoding.ASCII.GetBytes("xxx"); 
Verwandte Themen