C#:将字节数组转换为字符串并打印到控制台 公共void parse_表(二进制读取器填充) { 字节[]idstring=infle.ReadBytes(6); Console.WriteLine(Convert.ToString(idstring)); }

C#:将字节数组转换为字符串并打印到控制台 公共void parse_表(二进制读取器填充) { 字节[]idstring=infle.ReadBytes(6); Console.WriteLine(Convert.ToString(idstring)); },c#,C#,这是一个简单的片段:读取文件的前6个字节并将其转换为字符串 但是,控制台显示System.Byte[] 也许我使用了错误的类进行转换。我应该用什么?它最终将解析以UTF-8编码的文件名,我计划使用相同的方法读取所有文件名。实际上: public void parse_table(BinaryReader inFile) { byte[] idstring = inFile.ReadBytes(6); Console.WriteLine(Convert.ToString(idstr

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

但是,控制台显示
System.Byte[]

也许我使用了错误的类进行转换。我应该用什么?它最终将解析以UTF-8编码的文件名,我计划使用相同的方法读取所有文件名。

实际上:

public void parse_table(BinaryReader inFile) { byte[] idstring = inFile.ReadBytes(6); Console.WriteLine(Convert.ToString(idstring)); } 或者特别针对UTF-8:

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

我陷入了这样的困境:我有一个有符号的字节数组(
sbyte[]
)作为测试类的输入,为了简单起见,我想用一个普通的字节数组(
byte[]
)来代替它。我是通过谷歌搜索来到这里的,但汤姆的回答对我没用

我编写了一个helper方法来打印给定
字节[]
的初始值设定项:

    Console.WriteLine(Encoding.UTF8.GetString(value));
您可以这样使用它:

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#,然后可以将其复制到代码中

为了完整起见,这里是
unsignedbytes fromsignedbytes
方法:

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, }

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

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

我在代码库中使用了以下简单代码:

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

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

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

 byte[] bytes = { 1,2,3,4 };

 string stringByte= BitConverter.ToString(bytes);

 Console.WriteLine(stringByte);
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();
测试用例:

 byte[] bytes = { 1,2,3,4 };

 string stringByte= BitConverter.ToString(bytes);

 Console.WriteLine(stringByte);
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();
输出:

 byte[] bytes = { 1,2,3,4 };

 string stringByte= BitConverter.ToString(bytes);

 Console.WriteLine(stringByte);
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();

如果你想打印字节怎么办?@pyCthon:你问这个问题是什么意思?@pyCthon如果你想打印字节值,请签出。别忘了你还需要通过
使用System.Text导入
编码