2

我有一个包含随机 ASCII 字节的 NSMutableData。我想将这些字节的值移动一个值(X)。

所以让我们说我有这样的事情:

02 00 02 4e 00

我现在想将每个字节增加 0x01 以获得:

03 01 03 4f 01

最好的方法是什么?

4

2 回答 2

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);

二进制数据编程指南文章“使用可变二进制数据”中提供了更多信息。

此外,您所做的不是“移动”,而只是添加 0x01。“移位”通常是指“位移”。

于 2013-02-03T00:57:47.017 回答
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>
于 2013-02-03T01:12:54.040 回答