我正在尝试将一个字节转换为十六进制并计算校验和。 这是我的带有十六进制值的字节数组。
byte[] tocrc = { 0xff, 0xff, 0xff, 0xff, 2, 2, 0, 1, 29, 07, 10, 20, 46, 46, 0 };
我需要计算这个数组的校验和。
public static byte calcolacrc(byte[] tocrc)
{
byte crc = 0;
for (int i = 0; i < data.Length; i++)
{
crc += data[i];
}
crc &= 0xff;
return crc;
}
我的问题是,当我将字节与十六进制数相加时: 29 它是值29的整数,而不是十六进制 29 是不正确的。 sum的正确值是十进制 41
将十进制转换为十六进制我使用此函数:
value.ToString("X")
我该如何解决这个问题?
答案 0 :(得分:3)
你为前4个做得对,你只需要将0x
放在每个数字的前面,使其被解释为十六进制。
byte[] tocrc = { 0xff, 0xff, 0xff, 0xff, 0x02, 0x02, 0x00, 0x01, 0x29, 0x07, 0x10, 0x20, 0x46, 0x46, 0x00 };
答案 1 :(得分:1)
如果你想要HEX 29值,在你的数组中放0x29
。请记住,您的数组不是来自“十六进制”值 - 它是字节数组,十进制或十六进制只是常量的语法。