2016-07-19 25 views
-1

Ich weiß, dass diese Frage zwei Mal zuvor auf Stack-Overflow gestellt wurde, aber dieses Mal frage ich nach der garantiertesten Art und Weise, dies zu tun (Die Art, die den Wert der Daten nicht ändert). Ich möchte von String zu Byte [] dann zurück zu String konvertieren.Beste Art der Konvertierung zwischen Byte [] und String?

string s2 = BitConverter.ToString(bytes); // 82-C8-EA-17 
String[] tempAry = s2.Split('-'); 
byte[] decBytes2 = new byte[tempAry.Length]; 
for (int i = 0; i < tempAry.Length; i++) 
{ 
    decBytes2[i] = Convert.ToByte(tempAry[i], 16); 
} 

oder den folgenden Code ein:: Ich konnte ByteConverter, Convert, Encoding, BitConverter, HttpServerUtility.UrlTokenEncode/HttpServerUtility.UrlTokenDecode den folgenden Code verwenden

private string ToString(byte[] bytes) 
{ 
    string response = string.Empty; 

    foreach (byte b in bytes) 
     response += (Char)b; 

    return response; 
} 

Wenn Sie nicht immer noch bekommen, was ich will, ich will wissen, was Art und Weise funktioniert und was nicht, ich möchte wissen, welcher Weg verwendet werden soll. Hey, ich würde ein Byte-Array mit der geringsten Größe bevorzugen, weil ich dieses Array über das Netzwerk senden werde, und ich werde die ersten 256 Bytes verwenden.

+0

Wenn Sie möchten, dass die, die die letzte Menge an Daten verwendet ['Convert.ToBase64String'] (https://msdn.microsoft.com/en-us/library/system.convert.tobase64string (v = vs.110) .aspx) erhalten Sie eine viel kürzere Zeichenfolge als alle oben aufgeführten Elemente. –

+2

Auch, wie lautet die Frage "[Wie konvertiert man Byte-Array in Hexadezimal-String, und umgekehrt?] (Http://stackoverflow.com/questions/311165/how-do-you-convert-byte-array-to - Hexadezimalstring - und umgekehrt) "nicht Deckung für dich? –

Antwort

1

Ich möchte von Zeichenfolge in Byte [] dann zurück in Zeichenfolge konvertieren.

Wenn das, was Sie versuchen wirklich alles, was Sie tun müssen, zu tun ist, verwenden Sie einfach Encoding.UTF8.GetBytes(string) auf der Sendeseite und Encoding.UTF8.GetString(byte[]) auf der Empfangsseite.

private byte[] ToBytes(string message) 
{ 
    return Encoding.UTF8.GetBytes(message); 
} 

private string ToString(byte[] bytes) 
{ 
    return Encoding.UTF8.GetString(bytes); 
} 

Dies wird Ihnen eine Rundreise eine beliebige Zeichenfolge an Bytes zu konvertieren und wieder zurück in einen String in der geringsten Anzahl von Bytes.

Dies wird NICHT Arbeit byte [], um Zeichenfolge zu tun [] auf Byte, für ungefähr wie, dass Sie so etwas wie Convert.ToBase64String(byte[]) und Convert.FromBase64String(string) verwenden müssen. Die Verwendung von Encoding.UTF8.GetString(byte[]) für etwas, das keine ordnungsgemäß formatierte UTF8-Zeichenfolge war, führt möglicherweise dazu, dass Sie Daten bei der Konvertierung verlieren.