我在互联网上找到了以下代码,它将NSString
表示形式
@"00F04100002712"
转换为实际的字节数组。该代码有效并且确实生成了正确的输出;我只是不明白为什么有char byte_chars[3]
而不是char byte_chars[2]
因为代码中只使用了前两个位置。
void hexStringToBytes(NSString *s, NSMutableData *data)
{
unsigned char whole_byte;
char byte_chars[3] = {'\0','\0','\0'};
int commandLength = (int)[s length];
// convert hex values to bytes
for (int i=0; i < commandLength/2; i++)
{
byte_chars[0] = [s characterAtIndex:i*2];
byte_chars[1] = [s characterAtIndex:i*2+1];
whole_byte = strtol(byte_chars, NULL, 16);
[data appendBytes:&whole_byte length:1];
}
}
我认为这与strtol
函数调用有关,但我不确定是什么。
有人可以解释这是如何以及为什么起作用的吗?