我想在文件中打印值'½'。我搜索了ascii值,因为Alt +(ascii Value)会给你相同的。令我惊讶的是,我在各个站点中找到了此符号的2个ascii值。一个是171,另一个是189。
我尝试使用171和189编写此符号。再次令我惊讶的是,如果我在Windows中编写,171将给我这个符号。但如果我在UNIX中写作,189会给我这个符号。
我知道同一个符号不能有2个ASCII值。但是我在不同的操作系统中获得了相同符号的2个有效代码。所以任何人都可以告诉符号½??
的真正ASCII代码是什么答案 0 :(得分:17)
½不是ASCII character set中的字符。
您在网上找到的值可能会有所不同,因为他们使用的是不同的字符集。例如,在发明Unicode之前,Windows的本地化版本都使用了不同的code pages,其中基本的ASCII集扩展了一些额外的字符。
现在,当然,一切都是(或应该)完全是Unicode。可以找到该角色的详细Unicode信息(粗俗的一半)here。请注意,对于相同的数值,还有多个表示(例如,基数10,十六进制,二进制等)。
答案 1 :(得分:4)
请阅读ASCII维基百科页面。您将了解到ASCII没有“一半”字符。
目前,大多数系统都可以配置为使用UTF-8编码(这是“默认”或至少是Web和Unix系统上最常用的编码)。
UTF-8是Unicode的可变长度编码。这么多字符或字形由几个字节表示。对于½
(正式的粗俗分数一半 unicode字符),其UTF8编码是两个十六进制字节0Xc2 0xBD所以用C表示法\302\275
我正在使用Linux Gnome字符映射实用程序gucharmap
来查找所有内容。
您可能对UTF-32感兴趣(使用32位字符的固定长度编码,其中½由0x000000BD表示),或者甚至是UTF-16,其中许多字符是16位(特别是{ {1}}是0x00BD,例如UTF-16中的一个16位字符,但不是全部。您可能还对wide characters感兴趣,即{{1>}最近的 C 或 C ++ 标准(Windows和UTF-32上为UTF-16)在很多Unix上)。
FWIW,Qt使用QChar作为UTF-16(Java也有UTF-16 ½
...),但Gtk使用UTF-8,即可变长度字符。
请注意,对于像UTF-8这样的可变长度字符编码,字符串中的第N个字符(不是第N个字节!)需要扫描字符串。此外,某些字节组合无效UTF-8。
答案 2 :(得分:0)
正如其他人指出的那样:它不在 ASCII 表中(值 0..127)。
但它有一个 Unicode 代码:
它也可以使用 unicode U+2044 Fraction Slash 放入文本:
这具有适用于任何分数的优点:
答案 3 :(得分:-1)
我很确定它确实是ASCII表的一部分:
在Windows中,确保“NumLock”已启用,然后尝试[ALT +(NumPAD)171] =½。 对于¼使用[ALT + 172]