我陷入了困境,我有一个 signed 字节数组 (sbyte[]) 作为测试类的输入,我想用普通字节数组 (byte[]) 替换它简单。我通过 Google 搜索来到这里,但汤姆的回答对我没有用。
我写了一个辅助方法来打印给定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;
}