十六进制数据效验累加坑
我这里是使用初始值 int a = 0x2ac5 累加所有的数据段,其他数据段都为byte,
注意了int 累加 byte
//错误方式
for (byte b:btByte) {
a += b;
}
//正确方式
for (byte b:btByte) {
a += (0xff & b);
}
就这么点小细节 坑死我了
java中byte是8位 -128~127之间,而int是32bit,在转化前需将高24位置零,这样就不会出现补码导致的转换错误。
网友评论