public void parse_table(BinaryReader inFile)
{
byte[] idstring = inFile.ReadBytes(6);
Console.WriteLine(Convert.ToString(idstring));
}
它是一个简单的片段:读取文件的前6个字节并将其转换为字符串.
然而控制台显示System.Byte[].
也许我正在使用错误的类进行转换.我该怎么用?它最终将解析以UTF-8编码的文件名,我打算使用相同的方法来读取所有文件名.
Tom*_*dee 68
它实际上是:
Console.WriteLine(Encoding.Default.GetString(value));
Run Code Online (Sandbox Code Playgroud)
或者特别针对UTF-8:
Console.WriteLine(Encoding.UTF8.GetString(value));
Run Code Online (Sandbox Code Playgroud)
Jes*_*ebb 42
我处于困境,我有一个签名的字节数组(sbyte[])作为Test类的输入,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());
}
Run Code Online (Sandbox Code Playgroud)
你可以像这样使用它:
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, }
Run Code Online (Sandbox Code Playgroud)
输出是有效的C#,然后可以将其复制到您的代码中.
而且为了完整性,这是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;
}
Run Code Online (Sandbox Code Playgroud)
Jam*_*mer 14
这只是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();
}
Run Code Online (Sandbox Code Playgroud)
此方法的输出将是:
new byte[] { 48, ... 135, 31, 178, 7, 157 }
Run Code Online (Sandbox Code Playgroud)
Ami*_*ito 11
byte[] bytes = { 1,2,3,4 };
string stringByte= BitConverter.ToString(bytes);
Console.WriteLine(stringByte);
Run Code Online (Sandbox Code Playgroud)
我在代码库中使用了这个简单的代码:
static public string ToReadableByteArray(byte[] bytes)
{
return string.Join(", ", bytes);
}
Run Code Online (Sandbox Code Playgroud)
使用:
Console.WriteLine(ToReadableByteArray(bytes));
Run Code Online (Sandbox Code Playgroud)