我正在C#和Java中测试以下代码:
int lngCRC = 3012;
byte[] crc = new byte[2];
crc[0] = (byte)(lngCRC & 0xFF);
crc[1] = (byte)(lngCRC >> 8);
C#输出为:
crc [0] = 196; crc [1] = 11;
Java输出为:
crc [0] = -60; crc [1] = 11;
如何用两种语言获得相同的结果?
Java字节已签名(即,在-128和127之间)。我猜在C#中它们是未签名的。
二进制中的3012是00001011 11000100
。
不管字节是带符号字节还是无符号字节,高字节均为11。
当您将低字节11000100视为无符号字节时,它是196
当您将其视为有符号字节时,它是-60。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句