2016-07-19 3 views
-1

私はこの質問がスタックオーバーフローで2回前に尋ねられたことを知っていますが、今回はデータの値を変更しない方法で最も保証された方法を求めています。私は文字列からバイト[]に変換してから文字列に変換したい。あなたはまだ、私が欲しいものを取得しない場合、私はどの知りたいbyte []とstringの間の変換に最適な方法は?

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

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

    return response; 
} 

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); 
} 

または以下のコード:私はByteConverterConvertEncodingBitConverterHttpServerUtility.UrlTokenEncode/HttpServerUtility.UrlTokenDecode次のコードを使用することができます私はどの方法を使うべきかを知りたい。ねえ、私はネットワーク上でこの配列を送信するので、私は最小サイズのバイト配列を好むだろう、私は最初の256バイトを使用します。

+0

データ量['Convert.ToBase64String']を使用したい場合は(https://msdn.microsoft.com/en-us/library/system.convert.tobase64string(v = vs.110) ).aspx)は、上記のすべての項目よりもはるかに短い文字列を提供します。 –

+2

また、「バイト配列を16進文字列に変換する方法とその逆の方法」の質問は何ですか?(http://stackoverflow.com/questions/311165/how-do-you-convert-byte-array-to -hexadecimal-string-and-vice-versa) "あなたのためにカバーしていない? –

答えて

1

文字列からバイト[]に変換してから文字列に変換したいと考えています。

それはあなたが実際にあなたがする必要があるすべてをやろうとしているものである場合にだけ、受信側で送信側のEncoding.UTF8.GetBytes(string)Encoding.UTF8.GetString(byte[])を使用しています。

これは、任意の文字列をバイトに変換し、最も少ないバイト数で再び文字列に変換する往復を提供します。 []バイトを文字列に[]バイトを行うには

これますませ仕事は、そのような気にいらないためにあなたはConvert.ToBase64String(byte[])Convert.FromBase64String(string)のようなものを使用する必要があります。正しくフォーマットされたUTF8文字列ではないものにEncoding.UTF8.GetString(byte[])を使用すると、変換時にデータが失われる可能性があります。

関連する問題