增加NSData中的字节值

增加NSData中的字节值,nsdata,nsmutabledata,Nsdata,Nsmutabledata,我有一个NSMutableData,它包含随机的ASCII字节。 我想将这些字节的值移位一个值(X) 让我们假设我有这样的东西: 02 00 02 4e 00 NSString *_chars = @"abcd"; NSMutableData *_data = [NSMutableData dataWithBytes:[_chars UTF8String] length:_chars.length]; NSLog(@"Bef. : %@", _data); for (int i =

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

让我们假设我有这样的东西:

02 00 02 4e 00
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);    
现在,我想将每个字节增加0x01,以获得:

03 01 03 4f 01
最好的方法是什么?

用于获取指向字节的指针,并将它们视为普通的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);
uint8原始字节[]={0x02,0x00,0x02,0x4e,0x00};
NSMutableData*myData=[NSMutableData dataWithBytes:originalBytes长度:5];
uint8_t*bytePtr=[myData可变字节];
对于(int i=0;i<[myData length];i++){
bytePtr[i]+=0x01;
}
NSLog(@“%@”,myData);
在二进制数据编程指南的文章“中有更多信息”

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

类似以下内容:

02 00 02 4e 00
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);    
NSString*_chars=@“abcd”;
NSMutableData*\U data=[NSMutableData数据带字节:[[u chars UTF8String]长度:[u chars.length];
NSLog(@“Bef.:%@”,_数据);
对于(int i=0;i<_data.length;i++)((char*)[_datamutablebytes])[i]++;
NSLog(@“船尾:%@”,_数据);

日志显示结果:

Bef. : <61626364>
Aft. : <62636465>
Bef.:
船尾:

遍历并向每个字节添加一个。(这是一个骗人的问题吗?)