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议使用NSArray
以NSString
格式保存每个字符的hex值。
答:hex格式是相同数据的另一种表示forms。
B.你不把它们转换成hex数组。 每个angular色都有一个号码。 例如,在ASCII和UTF-8中, A
的数字是65(十进制表示)。 这是hex表示forms的0x41。
'A'(ASCII)== 65 == 0x41。
hex数字的数字为0
, a
– f
,其中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