目标c中十六进制字符串的校验和

时间:2013-11-04 16:45:30

标签: objective-c checksum

数据样本是:

de 55 7a ff 41 4e 3b 
.. .. .. .. .. .. .. .. .. .. .

前六个数字的总和(十六进制)为33b,“校验和”数为3b,为总和的最后两个字符。

这张支票的名称是什么?

我如何在Objective C中制作它?

谢谢

2 个答案:

答案 0 :(得分:1)

要获得十六进制字符串的校验和非常简单,大多数时候,我们只是过度思考它。

如果你有一个NSMutableData并希望得到它的校验和,请检查我的回答here.

如果你有一个字节数组:

例如:

Byte receivedHex[7] = {0xde, 0x55, 0x7a, 0xff, 0x41, 0x4e, 0x3b};

它更简单:

Byte checksum;
for (int i = 0; i < 7; i++){
    checksum += receivedHex[i];
    checksum = checksum&0xff;
}

答案 1 :(得分:0)

我找到了解决方案

首先,我必须将hex转换为NSData。 之后,将NSData转换为NSMutableArray。 使用NSMutableArray,我可以计算出六位数之和。