gpt4 book ai didi

java - CheckSum 8 异或错误结果

转载 作者:太空宇宙 更新时间:2023-11-04 12:22:16 25 4
gpt4 key购买 nike

我正在尝试创建一个“CheckSum 8 Xor”

这是我到目前为止的代码

String check = "00 02 01 03 c0 30 30 31 e1 c7 90 1c 44 54 61 6e 79 61 20 20 20 20 20 20 20 20 20 20 20 1c 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 04";

int getCheckSum(String check)
{
byte[] chars = check.getBytes();
int XOR = 0;
for (int i = 0; i < check.length(); i++)
{
XOR ^= Integer.parseInt(toHexString(chars[i]));
}
return XOR;
}

但是返回的值是“18”,而它应该是“20”

输入是十六进制我在这里检查并且计算正确

http://www.scadacore.com/field-applications/programming-calculators/online-checksum-calculator/

最佳答案

您必须用空格分隔输入字符串:

public static int getCheckSum(String str) {
int xor = 0;
String[] arr = str.split(" ");

for (int i = 0; i < arr.length; i++)
xor ^= Integer.parseInt(arr[i], 16);

return xor;
}

或者使用流:

public static int getCheckSum(String str) {
return Arrays.stream(str.split(" "))
.map(s -> Integer.parseInt(s, 16))
.reduce((a, b) -> a ^ b)
.orElse(0);
}

关于java - CheckSum 8 异或错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38727547/

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