我有一个unsigned char* array1
with values >127 && <255
。我想把它显示出来UITextView* MyTextView
,然后从UITextView
另一个读回unsigned char* array2
。由于结果值array1
应该等于 中的值array2
。
我知道 text 属性UITextView
是NSString
内部带有 UTF16 编码的对象。我的大于 127 的代码在 UTF16 编码中是两比特的。因此,如果我想显示我的 array1 并将其接收回 array2,我需要继续执行以下步骤:
- 将我的一字节字符转换为两字节,并用映射 UTF18 替换每个字符(结果我的 array1 将变大两倍)。
- 使用 UTF16 编码将我的 array1 转换为 NSString;
- 使用 UTF16 编码将我的 NSString 转换回 array2。
- 将每个两字节序列转换为 array2 的一个字节字符。
如何将我的非 ASCII 字符 >127 转换为 UTF16?使用映射?
代码:
UITextView* MyTextView;//assume this exists
unsigned char array1[] = {130,150,250};
unsigned char *array2 = malloc(4);
MyTextView.text = [NSString stringWithCString:array1 encoding: NSUTF16StringEncoding];
[MyTextView.text getCString:array2 length:MyTextView.text encoding:NSUTF8StringEncoding];
由于array1
和的结果值array2
不同。
请帮助理解我的字符 >127 并将其转换为 UTF16。