我处于困境,我有一个带符号字节数组 ( sbyte[]
) 作为测试类的输入,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());
}
你可以像这样使用它:
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, }
输出是有效的 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;
}