我正在转换适用于 Java 但不适用于 C# 的代码
byte[] buffer = new byte[64];
this.buffer[((int)this.count & 0x3F)] = -128;
这会生成一个编译时错误“常量值 '-128' 无法转换为 'byte'”。如何存储一个字节的负数?
在 C# 中,abyte
表示一个无符号的8 位整数,因此不能保存负值(有效值范围从0
到255
)。另一种方法是sbyte
,它是一个有符号-128
的 8 位整数(从到的有效值127
)。
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;
另请参阅: 积分类型表(C# 参考)