C#:将字节数组转换为字符串并打印到控制台

时间:2012-06-07 22:43:24

标签: c#

public void parse_table(BinaryReader inFile)
{
    byte[] idstring = inFile.ReadBytes(6);
    Console.WriteLine(Convert.ToString(idstring));
}

这是一个简单的片段:读取文件的前6个字节并将其转换为字符串。

然而,控制台显示System.Byte[]

也许我正在使用错误的类进行转换。我该怎么用?它最终将解析以UTF-8编码的文件名,我打算使用相同的方法来读取所有文件名。

6 个答案:

答案 0 :(得分:62)

实际上是:

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

或特别针对UTF-8:

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

答案 1 :(得分:38)

我处于困境,我有一个签名的字节数组(sbyte[])作为Test类的输入,我想用普通的字节数组替换它({{1为了简单起见。我从谷歌搜索到达这里,但汤姆的回答对我没用。

我编写了一个帮助方法来打印出给定byte[]的初始值设定项:

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

输出是有效的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

答案 2 :(得分:13)

这只是Jesse Webbs代码的更新版本,不附加不必要的尾随,字符。

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

此方法的输出为:

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

答案 3 :(得分:7)

我在代码库中使用了这个简单的代码:

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

使用:

Console.WriteLine(ToReadableByteArray(bytes));

答案 4 :(得分:2)

d = {v:k for k, v in enumerate(df['Class'].unique())}
print (d)
{'iris-versicolor': 0, 'iris-virginica': 2, 'iris-setosa': 1}

df['Class'] = df['Class'].map(d)
print (df)
   Sepal Length  Sepal Width  Petal Length  Petal  Width  Class
0            89          5.5           2.5    4.0    1.3      0
1            85          6.0           3.4    4.5    1.6      0
2            31          5.4           3.4    1.5    0.4      1
3            52          6.9           3.1    4.9    1.5      0
4           111          6.4           2.7    5.3    1.9      2

答案 5 :(得分:0)

一些使用linq和字符串插值的乐趣:

public string ByteArrayToString(byte[] bytes)
{
    if ( bytes == null ) return "null";
    string joinedBytes = string.Join(", ", bytes.Select(b => b.ToString()));
    return $"new byte[] {{ {joinedBytes} }}";
}

测试案例:

byte[] bytes = { 1, 2, 3, 4 };
ByteArrayToString( bytes ) .Dump();
ByteArrayToString(null).Dump();
ByteArrayToString(new byte[] {} ) .Dump();

输出:

new byte[] { 1, 2, 3, 4 }
null
new byte[] {  }