gpt4 book ai didi

java - 校验和计算 - 最低有效字节的二进制补码

转载 作者:行者123 更新时间:2023-11-30 02:38:05 25 4
gpt4 key购买 nike

我试图通过计算数组中所有数据字节之和的最低有效字节的二进制补码来创建校验和。

给定一个数组:

byte[] bytes = new byte[] { 0x01, 0x02 };

这样的东西能行吗...

 public static void main(String []args)
{
byte[] bytes = new byte[] { 0x01, 0x02 };

BigInteger bi = new BigInteger(bytes);

BigInteger biRes = bi.not().add(BigInteger.ONE);

byte[] result = biRes.toByteArray();

System.out.println("a: " + result);

System.out.println("b: " + javax.xml.bind.DatatypeConverter.printHexBinary(result));
}

产生...

一个:[B@34bdb859b: FEFE

这是正确的吗?

最佳答案

我有另一个解决方案:

private static byte calculateChecksum8(byte[] bytes){

byte result = 0;
for(int i = 0; i < bytes.length; i++){
result += bytes[i];
}
result = (byte) (~ result & 0xFF);
result = (byte) (result +1 & 0xFF);

String str = String.format("%02x", result);
System.out.println(result+" = "+str.toUpperCase());

return result;
}

有人确认吗?

关于java - 校验和计算 - 最低有效字节的二进制补码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26191250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com