我正在转换使用Java而不是C#
的代码byte[] buffer = new byte[64];
this.buffer[((int)this.count & 0x3F)] = -128;
这会产生编译时错误“常量值'-128'无法转换为'byte'。”如何为一个字节存储负数?
答案 0 :(得分:15)
在C#中,byte
代表无符号 8位整数,因此无法保持负值(有效值范围从0
到{{1} })。另一种选择是255
,它是签名的 8位整数(从sbyte
到-128
的有效值。)
答案 1 :(得分:6)
Java中的byte
数据类型是签名( - 128-127)。 C#中的等效数据类型为sbyte
。
所以等效的C#代码如下:
sbyte[] buffer = new sbyte[64];
buffer[..] = -128;
如果需要无符号字节数组(0-255),则与byte
-128具有相同位模式的sbyte
为128(0x80)。
byte[] buffer = new byte[64];
buffer[..] = 128;