Я был в затруднительном положении, где я был подписал массив байтов (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;
}
, что если вы хотите напечатать байты? – pyCthon
@pyCthon: что вы имели в виду под этим вопросом? – lpapp
@pyCthon Если вы хотите распечатать значения байтов, проверьте [мой ответ] (http://stackoverflow.com/a/20011305/346561). –