Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从Hexdump字符串中创建NSData?_Ios_Objective C_Nsmutabledata_Hexdump - Fatal编程技术网

Ios 如何从Hexdump字符串中创建NSData?

Ios 如何从Hexdump字符串中创建NSData?,ios,objective-c,nsmutabledata,hexdump,Ios,Objective C,Nsmutabledata,Hexdump,我有一个图像的NSData,现在我想在图像的NSData中附加几个字节,我把这些字节作为hextump字符串。我需要将以下内容附加到图像数据的末尾:62706c69 73743030 23400000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000113200 0000e802 00007050000010000000

我有一个图像的NSData,现在我想在图像的NSData中附加几个字节,我把这些字节作为hextump字符串。我需要将以下内容附加到图像数据的末尾:
62706c69 73743030 23400000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000113200 0000e802 00007050000010000000010000009132 a4cb
。我想我应该从hextump字符串创建一个NSData,但是我不知道该怎么做


有人知道吗?

您现在有一个NSData对象,我们称它为
origData
,还有一个NSString,我们称它为
str
。首先,从字符串中删除任何空格或无关字符,使其仅为纯十六进制。你也可以检查长度是否均匀,如果不是的话,它的形状很差

NSMutableData *data = [NSMutableData dataWithData:origData];
const char *ptr = [str cStringUsingEncoding:NSASCIIStringEncoding];
NSUInteger len = [str length]/2;
while(len--) {
    char num[5] = (char[]){ '0', 'x', 0, 0, 0 };
    num[2] = *ptr++;
    num[3] = *ptr++;
    uint8_t n = (uint8_t)strtol(num, NULL, 0);

    [data appendBytes:&n length:1];
}

我已经使用这种代码多年了,YMMV。

您现在应该知道您需要发布相关代码。