Byte[] 类是一个字符数组。我的意思是你只能在它的索引处设置一个字符。
如果我们有
Byte comm[24]; 然后comm[0]=0x01; 在这里看起来很混乱,因为它只保存一个字符。
声明将类似于comm[0]='x';。
下面的代码将从给定的字符串创建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];
}
转换函数:
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[] 的任何字符,那么您只能在任何索引处保存一个字符。
由于以上字符的十六进制值多于一个字符,Byte[]中只能保存一个字符。
我建议使用NSArray将每个字符的十六进制值保存为NSString格式。