为什么转换为Char时ASCII值必须是整数

时间:2013-12-27 05:09:16

标签: vb.net visual-studio

当我们将ASCII值转换为Char值时,我们使用Chr(Integer)。当我们将Char值转换为ASCII值时,我们使用Asc(Char)(返回一个整数)。

我的问题是:

当最大ASCII值为字节时,为什么Char需要将其值转换为Integer?为什么我们不能使用Byte而不是Integer?

2 个答案:

答案 0 :(得分:1)

至于为什么Chr() 接受整数:

  • 只有编码支持超过一个字节的字符范围。

  • 请参阅Char Chr(Integer CodeChar)的文档:Strings.Chr

至于为什么Asc() 提供整数:

  • Asc希望支持多字节字符,例如 controlchars ,i.E。 CR LF

  • 请参阅Integer Asc(Char String)的文档:Strings.Asc

答案 1 :(得分:1)

Chr()和Asc()函数是来自早期VB版本的遗留函数,当Unicode尚未出现时。 的版本具有字节类型,直到VB.NET才会添加。所以他们使用Integer代替了当时的16位值。

您应该再次使用它们,只维护它们以便轻松移植旧的VB代码并具有遗留行为。 ChrW()和AscW()是现代版本,他们知道如何处理Unicode。其中Integer仍然适合处理Unicode代码点的范围。 AscW中的“Asc”不合适,该功能实际上并不转换为ASCII码。您将获得数字Unicode代码点值。但他们有点坚持这个名字。