4

我知道 ASCII 代码在十进制 0-127 和0000 0000二进制0111 1111之间,而 128-255 之间的值是扩展的 ASCII。

我也知道 int 接受 9 位数字(我错了,范围int在 (-2,147,483,648 到 2,147,483,647) 之间),所以如果我们将 (0-Max intRange) 之间的每个数字都转换为 a char,就会有很多符号;例如:

(char)999,999,999给出짿,这是一个韩语符号(我什至不知道它是什么意思;谷歌翻译找不到任何意思!)。

int最小值范围到 0之间的值也会发生同样的情况。

那些符号是一一输入的,这是没有意义的。

我不明白 - 他们如何分配这些大数字来拥有自己的性格?

4

1 回答 1

20

我不明白他们如何分配这些大数字来拥有自己的符号?

分配由 Unicode 联盟完成。有关详细信息,请参见http://unicode.org

但是,在您的特定情况下,您正在做一些完全荒谬的事情。你有整数 999999999,十六进制是 0x3B9AC9FF。然后将其转换为 char,它会丢弃前四个字节并为您提供 0xC9FF。如果您随后查看 Unicode.org:http://www.unicode.org/cgi-bin/Code2Chart.pl发现是的,它是一个韩语字符。

Unicode 代码点实际上可以很大;其中有超过一百万。但是你不能仅仅通过铸造来获得它们。要使用 UTF-16(如 C# 所做的那样)获取超出“正常”范围的 Unicode 代码点,您需要使用两个字符。请参阅http://en.wikipedia.org/wiki/UTF-16,关于代理对的部分。

要解决您问题中的其他一些问题:

我知道 ACCII 代码在十进制 (0-127) 和二进制 (0000 0000 到 0000 1111) 之间。

那是ASCII,而不是ACCII,二进制中的 127 是 01111111,而不是 00001111

我们也知道 int 接受 9 位数字,所以如果我们将每个数字转换为

int 的范围比这更大。

不知道是什么意思连谷歌翻译都找不到意思

韩语不像中文,每个字形代表一个单词。那些是字母。除非碰巧偶然形成了一个词,否则它们没有意义。您可以通过谷歌搜索随机选择的英文字母并尝试找到它们的含义。也许有时你会随机选择 CAT,但大多数时候你会选择 XRO 或一些不是单词的东西。

如果您想了解韩文字母的工作原理,请阅读此内容:http ://en.wikipedia.org/wiki/Hangul

于 2013-05-01T23:12:53.643 回答