从NSData对象的开头删除数据

时间:2015-11-09 19:55:23

标签: ios nsdata nsrange

我正在组装一个NSData对象,我得到以下

0100020000

这是我想要的,除了领先的零。我需要它

100020000

我尝试了以下代码。但它留给我00020000.

NSRange range = NSMakeRange(0, 1);
[byteRequest replaceBytesInRange:range withBytes:NULL length:0];

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:0)

根据您的描述,您有以下5个字节:

1,0,2,0,0

你以某种方式将其转换为十六进制,每个字节创建两位数:

" 01 00 02 00 00"

但这只是前一个字节的文本表示。它相当于所有这些:

" 0100020000"

" 0x0100020000"

" 4295098368" (十进制) " 040000400000" (八进制)

你想要的那个:" 100020000"

就像" 1.00"相当于" 1.0"," 01"相当于" 1"。

如果你的目标是将所有字节的字符串作为两位数的字符串,除了第一个字符串,它应该只有所需的数字,那么这是一个例子:

 int bytes[5] = {1, 0, 2, 0, 0};
 NSString *str = [NSString stringWithFormat:@"%x%02x%02x%02x%02x", bytes[0], bytes[1], bytes[2], bytes[3], bytes[4]];

如果字节数是未知的,你可以使用一个循环并附加这些。从%x开始,然后使用%02x进行后续操作。