【发布时间】:2013-06-17 22:43:26
【问题描述】:
我正在尝试显示 0-255 之间的所有十六进制字符。我能够表示从 0x00 到 0x7f 的二进制数据,但是一旦我超过 0x7f,它看起来像是在进行某种类型的 UTF 格式化,并开始添加 C。这就是我的做法”
unichar value = 0;
for (value = 0; value < 255; value++) {
[test writeExample:[NSString stringWithFormat:@"%C", value]];
}
有谁知道如何更改它以使其在 0x7f 之后继续显示正确的十六进制?我用 %c 试过 char,用 %C 试过 unichar。我已经能够表示 0x00 - 0x7f,但我无法表示扩展的 ascii 字符 0x80 - 0xFF。
【问题讨论】:
-
是的,先生,%X 没有用。
-
尝试
NSLog(@"%X", 255);会得到什么?顺便说一句,你的 for 循环在你到达 255 之前结束,这是一个有效的十六进制 (FF)。 -
而且,当我将 %X 插入到上述循环中时,它会一直运行下去。
-
这几乎是您上一个问题的重复。再次,将线一分为二。
NSString *val = [NSString stringWithFormat:@"%C", value];和[test writeExample:val];。这样你就可以看出是哪一行出了问题。 -
您想向
writeExample:方法发送什么?使用%x为您提供每个整数值的十六进制表示。使用%C可以为您提供每个整数值的字符表示。两个截然不同的结果。
标签: objective-c utf-8 hex