2016-04-25 45 views
0

を見つけることができませんでしたが、私は型「にSystem.FormatException」の未処理の例外が がmscorlib.dllConvert.ToByteは、私はバイトに「XXX」を変換何とか必要な任意の認識可能な数字

に発生した例外

ました

追加情報:認識可能な数字が見つかりませんでした。

"xxx"の値はバイトに変換できますか?

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

バイト[] TR = Encoding.UTF8.GetBytes( "XXX")は、この作品の罰金しかし、私どのように私はこのシフトを適用することができますか疑問に思う16)<< 4); –

+1

その後にシフトを適用します。あなたは変換でそれを適用することはできません。 – chris579

+0

xxxを16進数でバイトに変換しています。私たちはxxxを16基持っていません。 – Mehrdad

答えて

0

バイトに "XXX" を変換することはできません。これは単にバイトの表現ではありません。

+0

バイト[] tr = Encoding.UTF8.GetBytes( "xxx");しかし、これで私はxが120 –

+0

です有効な値は – chris579

0

この行(Convert.ToByte("xxx", 16) << 4)は、byteに解析すると、System.FormatExceptionをスローする理由で、文字列に変換できないintegerを返します。

しかし、すでに文字列をbyte []に​​変換する方法の良い例があります。

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

ですが、私は120,0,120,0,120,0を取得しましたが、Encoding.UTF8.GetBytes( "xxx")で私は120,120,120を得ることができるので、おそらくEncoding.UTF8 .GetBytes( "xxx")? –

+0

@IrmantasMedeišis私のアプローチの唯一のメリットは、[無効なデータ](http://www.cl.cam.ac.uk/)が含まれていても元の文字列を再構築できることです。 〜mgk25/ucs/examples/UTF-8-test.txt)を参照してください。 –

0

あなたはバイト配列に文字列を変更する必要がある場合:

byte[] toBytes = Encoding.ASCII.GetBytes("xxx"); 
関連する問題