在项目中使用了一个加密算法使用的 异或算法进行加密,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转换为无符号的
网友评论