gpt4 book ai didi

java - 使用字节进行数学运算

转载 作者:行者123 更新时间:2023-12-01 12:46:25 24 4
gpt4 key购买 nike

我需要对数组/数据包中保存的字节进行一些数学运算(+、- 和 mod)。实际上,我需要使用一些特定的 ck 规则为数据包创建校验和(数据包中所有字节的总和 -> sum mod 100(十月中的 256) -> FD - mod)。问题是所有整数的自动 java 转换都会产生错误的结果(手动检查)。

我该怎么做?

编辑:感谢您的回答!添加了一些快速测试代码(抱歉,我无法发布原始代码)。

我刚刚在 for 循环中添加了 0xFF 掩码,并且 ck 是正确的,但其他输出是错误的。如果您想给我更多提示,我就在这里:D 准备好学习了!

谢谢

输入:

    input byte[] packet = {(byte)0x80, (byte)0x11, (byte)0x30, (byte)0x02, (byte)0x46, (byte)0x56, (byte)0x57, (byte)0x30, (byte)0x38, (byte)0x30,
(byte)0x35, (byte)0x45, (byte)0x52, (byte)0x00};

ck计算器方法:

  byte ckCalculator(byte[] b) {

int len = b.length;
int sum = 0;

for(int i=0; i<len; i++) {
sum = sum + b[i]&0xFF;
}

System.out.println(String.format("%02X ", sum));

int module = sum % 256;

System.out.println(String.format("%02X ", module));

int diff = 253 - module;

byte ck = (byte)diff;
System.out.println(String.format("%02X", ck));
return ck;
}

输出:总和:1A模块:1Ack:E3

预期输出:总和:31A模块:1Ack:E3

最佳答案

括号;)。

sum = sum + (b[i] & 0xFF);

或更好

sum += b[i] & 0xFF;

顺便说一句

System.out.println(String.format("%02X ", sum));

可以写成:(注意换行符为%n)

System.out.printf("%02X %n", sum);

关于java - 使用字节进行数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24655657/

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