我有一個NSData包含字節像< 00350029 0033>長度爲6,是否有任何正確的方法來分割字節像數組莫名其妙像(00,35,00,29,00,33 )?檢索NSData到十六進制的長度
1
A
回答
4
NSData *data = ...;
NSMutableArray *bytes = [NSMutableArray array];
for (NSUInteger i = 0; i < [data length]; i++) {
unsigned char byte;
[data getBytes:&byte range:NSMakeRange(i, 1)];
[bytes addObject:[NSString stringWithFormat:@"%x", byte]];
}
NSLog(@"%@", bytes);
(假設你想要的字節爲十六進制字符串表示,如在你的榜樣。否則,使用NSNumber
)
0
你可以使用NSData的方法
- (void)getBytes:(void *)buffer range:(NSRange)range
獲得給定範圍內的字節數(已分配的內存適量後,用malloc),然後用
+ (id)dataWithBytes:(const void *)bytes length:(NSUInteger)length
創建新的小(1字節長)數據對象,然後將其放入數組中。但是,如果你只是檢索指向字節本身的指針(使用[數據字節]),它會給你一個指針(C類意義上的數組類型,而不是NSArray,但也可以使用並且效率更高)。
0
static NSString* HexStringFromNSData(NSData* data) {
NSUInteger n = data.length;
NSMutableString* s = [NSMutableString stringWithCapacity:(2 * n)];
const unsigned char* ptr = [data bytes];
for(NSUInteger i = 0; i < n; i++, ptr++) {
[s appendFormat:@"%02x", (long)*ptr];
}
return [NSString stringWithString:s];
}
相關問題
- 1. 十六進制數的長度
- 2. 如何將十六進制NSData轉換爲十進制數組?
- 3. 長到十六進制字符串
- 4. 字符串到sha1,然後到十六進制(長度爲40)
- 5. 將十六進制轉換爲二進制到十六進制?
- 6. Javascript十進制到十六進制
- 7. 轉換十六進制到十進制
- 8. 十六進制串&十六進制
- 9. python字符串到十六進制代表長度值
- 10. 將十進制轉換爲十六進制和十六進制
- 11. 用戶輸入十六進制到十六進制陣列
- 12. 添加十六進制值以得到十六進制結果
- 13. 將字符串轉換爲十六進制到十六進制
- 14. 十六進制字符串到十六進制整數
- 15. 將十六進制值存儲到NSData中
- 16. 十六進制
- 17. 十六進制
- 18. 十六進制
- 19. 十六進制,八進制,二進制到十進制(C++)
- 20. 二進制,八進制,十六進制到十進制程序
- 21. 得到十六進制
- 22. Xamarin.Forms.Color到十六進制值
- 23. 從RGBA到十六進制
- 24. C# - AsymmetricCipherKeyPair到十六進制
- 25. 打印長十六進制字符串
- 26. 轉換十六進制數長整型
- 27. 長十六進制字符串在Python
- 28. 將長轉換爲十六進制
- 29. 存儲長十六進制值
- 30. 無符號長十六進制表示
的可能重複[如何一個NSData轉換成一個NSString十六進制字符串?](http://stackoverflow.com/questions/7520615/how-to-convert-an-nsdata-into-an-nsstring-hex-string) –