繁体   English   中英

按位移位和字节转换在Java和C#中给出不同的结果

[英]Bitwise shift and byte cast gives different results in Java and C#

我在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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM