我有一个保存随机ASCII字节的NSMutableData。 我想将这些字节的值移动一个值(X)。
那么让我们说我有这样的事情:
02 00 02 4e 00
我现在想要将每个字节增加0x01以获得:
03 01 03 4f 01
最佳方法是什么?
答案 0 :(得分:2)
使用mutableBytes获取指向字节的指针,并将它们视为普通的C数组。
uint8_t originalBytes[] = {0x02, 0x00, 0x02, 0x4e, 0x00};
NSMutableData * myData = [NSMutableData dataWithBytes:originalBytes length:5];
uint8_t * bytePtr = [myData mutableBytes];
for(int i = 0; i < [myData length]; i++) {
bytePtr[i] += 0x01;
}
NSLog(@"%@", myData);
“二进制数据编程指南”中的文章“Working With Mutable Binary Data”。
此外,你正在做的不是“转移”,而只是添加0x01。 “转移”通常是指“bit shifting”。
答案 1 :(得分:1)
类似的东西:
NSString *_chars = @"abcd";
NSMutableData *_data = [NSMutableData dataWithBytes:[_chars UTF8String] length:_chars.length];
NSLog(@"Bef. : %@", _data);
for (int i = 0; i < _data.length; i++) ((char *)[_data mutableBytes])[i]++;
NSLog(@"Aft. : %@", _data);
日志显示结果:
Bef. : <61626364>
Aft. : <62636465>