インターネットで次のコードを見つけました。これは、NSString
表現などを
@"00F04100002712"
実際のバイト配列に変換します。コードは機能し、正しい出力を生成します。コードでは最初の 2 つの位置のみが使用されているため、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
関数呼び出しと関係があると思いますが、何が原因かわかりません。
誰かがこれがどのように、そしてなぜ機能するのか説明できますか?