IOS:将string转换为hex数组

我有string表示数据。我需要将这些数据转换为hex数组。通过使用hex数组我可以将其传递到CRC写入外设

我的string数据是这样的

NSString *stringsdata=@"helloworld1234567812345q"; 

我需要转换为hex格式数组

  {0x0h,0x0e............0x0q}. 

所以通过使用这个数组我可以保留在crc中的数据,并将其写入到外围数据

  Byte comm[24]; comm[0]=0x01; comm[1]=0x30; comm[2]=0x62; comm[3]=0x00;................ 

已经尝试了许多可能的解决scheme,但不幸运。任何身体的帮助将不胜感激。

Byte[]类是一个字符数组。 我的意思是你只能在索引处设置一个字符。

如果我们有

Byte comm[24]; 那么comm[0]=0x01; 在这里看起来很迷惑,因为它只保存一个字符。

声明将像comm[0]='x';

下面的代码将创build来自给定string的Byte[]

 NSString *stringsdata=@"helloworld1234567812345q"; CFStringRef cfString = (__bridge CFStringRef)stringsdata; char *array = charArrayFromCFStringRef(cfString); size_t length= strlen(array); Byte comm[24]; for (int i = 0; i < length; i++) { comm[i] = array[i]; } 

转换function:

 char * charArrayFromCFStringRef(CFStringRef stringRef) { if (stringRef == NULL) { return NULL; } CFIndex length = CFStringGetLength(stringRef); CFIndex maxSize = CFStringGetMaximumSizeForEncoding(length, kCFStringEncodingUTF8); char *buffer = (char *)malloc(maxSize); if (CFStringGetCString(stringRef, buffer, maxSize, kCFStringEncodingUTF8)) { return buffer; } return NULL; } 

输出:

 Printing description of comm: (Byte [24]) comm = { [0] = 'h' [1] = 'e' [2] = 'l' [3] = 'l' [4] = 'o' [5] = 'w' [6] = 'o' [7] = 'r' [8] = 'l' [9] = 'd' [10] = '1' [11] = '2' [12] = '3' [13] = '4' [14] = '5' [15] = '6' [16] = '7' [17] = '8' [18] = '1' [19] = '2' [20] = '3' [21] = '4' [22] = '5' [23] = 'q' } 

这里的东西是,如果你仍然从Byte[]转换任何字符,那么你只能在任何索引保存一个字符。

因为对于上面的字符,它的hex值是多个字符,并且只能在Byte[]保存一个字符。

我build议使用NSArrayNSString格式保存每个字符的hex值。

答:hex格式是相同数据的另一种表示forms。

B.你不把它们转换成hex数组。 每个angular色都有一个号码。 例如,在ASCII和UTF-8中, A的数字是65(十进制表示)。 这是hex表示forms的0x41。

'A'(ASCII)== 65 == 0x41。

hex数字的数字为0af ,其中a的值为10, b的值为11 …通过将高位数字乘以16并将低位数字相加,转换成十进制表示forms。 (0x41:4 x 16 + 1 = 65)

请阅读并理解: http : //en.wikipedia.org/wiki/Hexadecimal

C.要将string转换为数字,您必须知道,您要应用哪个代码。 可能你想使用UTF-8。

 NSString *text = @"helloworld123123989128739"; NSUInteger length = [text lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; char data[length]; [text getCString:data maxLength:length usingEncoding:NSUTF8StringEncoding]; // Here we go 
Interesting Posts