我需要將NSInteger和NSString表示爲字節數組。以下是我正在尋找的樣品。將NSInteger和NSString轉換爲字節數組
對於如何,這harcodings工作正常。我想通過代碼來做到這一點。任何線索。
首先,NSInteger的成十六進制字節:
NSInteger test = 1;
unsigned char byte[] = { 0x00, 0x01 };
NSInteger test = 16;
unsigned char byte[] = { 0x00, 0x10 };
NSData *data = [NSData dataWithBytes:byte length:sizeof(byte)];
其次,的NSString成十六進制字節:
NSString *test = @"31C5B562-BD07-4616-BCBD-130BA6822790";
unsigned char byte[] = {0x31, 0xC5, 0xB5, 0x62, 0xBD, 0x07, 0x46, 0x16, 0xBC, 0xBD, 0x13, 0x0B, 0xA6, 0x82, 0x27, 0x90};
NSData *data = [NSData dataWithBytes:byte length:sizeof(byte)];
我試着用下面的代碼,它可以很好地用於我的UUID但NSInteger的到要工作我需要發送「0010」而不是16和「0001」而不是1.因此,任何線索如何做這種轉換。
- (NSData *)hexData {
NSMutableData *hexData = [NSMutableData data];
int idx = 0;
for (idx = 0; idx+2 <= self.length; idx+=2) {
NSRange range = NSMakeRange(idx, 2);
NSString* hexStr = [self substringWithRange:range];
NSScanner* scanner = [NSScanner scannerWithString:hexStr];
unsigned int intValue;
[scanner scanHexInt:&intValue];
[hexData appendBytes:&intValue length:1];
}
return hexData;
}
編輯:
int8_t test = -59;
int8_t bytes = CFSwapInt16HostToBig(test);
NSData *data1 = [NSData dataWithBytes:&bytes length:sizeof(bytes)];
晚晴是0xFF,而不是0xC4
查看我的回答對我自己的帖子在這裏: http://stackoverflow.com/a/32951887/1758944 –
查看我的回答類似的職位在這裏: http://stackoverflow.com/a/32951887/1758944 –