2012-06-07 18 views
30
 
public void parse_table(BinaryReader inFile) 
{ 
    byte[] idstring = inFile.ReadBytes(6); 
    Console.WriteLine(Convert.ToString(idstring)); 
} 

これは簡単なスニペットです。ファイルの最初の6バイトを読み込んで文字列に変換します。C#:バイト配列を文字列に変換してコンソールに出力する

ただし、コンソールにはSystem.Byte[]と表示されます。

多分私は変換のために間違ったクラスを使用しています。私は何を使用すべきですか?最終的にUTF-8でエンコードされたファイル名を解析することになります。同じ方法を使用してすべてのファイル名を読み込む予定です。

答えて

45

それが実際には次のとおり

Console.WriteLine(Encoding.Default.GetString(value)); 

または特異的にUTF-8の場合:

Console.WriteLine(Encoding.UTF8.GetString(value)); 
+7

を何バイトを印刷したい場合は? – pyCthon

+0

@pyCthon:その質問はどういう意味ですか? – lpapp

+2

@pyCthonもしあなたがバイト値を出力したいなら、[私の答え](http://stackoverflow.com/a/20011305/346561)をチェックしてください。 –

27

私はテストへの入力としてバイト配列(sbyte[])をを署名した苦境にありましたクラスと私は簡単にするために、通常のバイト配列(byte[])に置き換えたいと思った。私はGoogle検索からここに着いたが、Tomの答えは私には役に立たなかった。

私は与えられたbyte[]の初期化子をプリントアウトするヘルパーメソッドを書いた:

public void PrintByteArray(byte[] bytes) 
{ 
    var sb = new StringBuilder("new byte[] { "); 
    foreach (var b in bytes) 
    { 
     sb.Append(b + ", "); 
    } 
    sb.Append("}"); 
    Console.WriteLine(sb.ToString()); 
} 

あなたはこのようにそれを使用することができます:ouputを、次にちょうどすることができ、有効なC#のである

var signedBytes = new sbyte[] { 1, 2, 3, -1, -2, -3, 127, -128, 0, }; 
var unsignedBytes = UnsignedBytesFromSignedBytes(signedBytes); 
PrintByteArray(unsignedBytes); 
// output: 
// new byte[] { 1, 2, 3, 255, 254, 253, 127, 128, 0, } 

コードにコピーされます。

そして、ちょうど完全を期すため、ここでUnsignedBytesFromSignedBytes方法であって、

// http://stackoverflow.com/a/829994/346561 
public static byte[] UnsignedBytesFromSignedBytes(sbyte[] signed) 
{ 
    var unsigned = new byte[signed.Length]; 
    Buffer.BlockCopy(signed, 0, unsigned, 0, signed.Length); 
    return unsigned; 
} 
4

これは不要末尾,文字を追加しませんジェシーウェッブ夫妻コードのちょうど更新されたバージョンですが。

public static string PrintBytes(this byte[] byteArray) 
{ 
    var sb = new StringBuilder("new byte[] { "); 
    for(var i = 0; i < byteArray.Length;i++) 
    { 
     var b = byteArray[i]; 
     sb.Append(b); 
     if (i < byteArray.Length -1) 
     { 
      sb.Append(", "); 
     } 
    } 
    sb.Append(" }"); 
    return sb.ToString(); 
} 

このメソッドの出力は次のようになります。

static public string ToReadableByteArray(byte[] bytes) 
{ 
    return string.Join(", ", bytes); 
} 

は、使用するには::

new byte[] { 48, ... 135, 31, 178, 7, 157 } 
3

私は私のコードベースでは、この単純なコードを使用しました

Console.WriteLine(ToReadableByteArray(bytes)); 
関連する問題