java与C同样代码,结果不一样

2020-11-27  本文已影响0人  念念不忘_2016

在项目中使用了一个加密算法使用的 异或算法进行加密,java与c同样的代码,结果却不同,问题原因在与c语言的 unsigned char 类型的字节长度是8位并且没有符号位,因此它能表示的数字大小为0~255,而java byte字节是有符号位的,其范围为-128~127,因此导致结果不一致。
此时只需要将java byte 转化为无符号的byte 即可,实现方式如下:
如果你只需要对英文文本的每个字节进行数据处理,则无需考虑有符号数和无符号数的转换问题;

以下为Java转换代码。

1、有符号byte 转 无符号int:
  byte b= -190;
  int a= bytes & 0xff;
2、无符号int 转 有符号byte:  
int a= 300;
byte b= (byte)a;

通过& 0xff 即可将 byte转换为无符号的

上一篇 下一篇

猜你喜欢

热点阅读