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

标签 ios objective-c nsmutabledata hexdump

我有一个图像的 NSData,现在我想将几个字节附加到图像的 NSData,我有字节作为 Hexdump 字符串。我需要附加这个:62706c69 73743030 23400000 00000000 00080000 00000000 01010000 00000000 00010000 00000000 00000000 00000000 00113 200 0000e802 00007005 00000100 00000100 00009132 a4cb 到图像NSData的末尾。我想我应该从 hexdump 字符串创建一个 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。

关于ios - 如何从 Hexdump 字符串中创建 NSData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22647102/

相关文章:

ios - Firebase map 检索纬度和经度

objective-c - 如何根据背景中的位图检查鼠标在屏幕上的位置? ( cocoa /Objective-C )

nsdata - iPhone 中 NSData 和 NSMutableData 的区别

objective-c - 如何串联多个NSData?

objective-c - 关于objective-c中 "strong"属性的问题

ios - 如何修复 UIPopoverController 中呈现的 UIActivityViewController 的内存泄漏

iphone - 旧项目在 iOS 5 上运行缓慢

ios - UIDocument closeWithCompletionHandler : completes immediately

ios - NSData PNG无效的PNG文件:iDOT没有指向有效的IDAT block

ios - 制作一个出现在 xcode 项目中所有 .NIb 文件上的 UIVIew