如何在字符中存储ASCII值(仅限Ada 83)

如何在字符中存储ASCII值(仅限Ada 83),ada,Ada,如何将整数(例如33)的ascii值存储在字符中。我想在Ada83中有这样的东西,而不是95 C:代码 char c = 10; char *k = &c; strncat (des, k, 1); printf("%s",des); 谢谢 C : Character := Character'Val(10); 或 第一个在Ada的所有版本中都有效。第二种是Ada 83中的标准方法;它现在已经过时了。较新的方法是 C : Character := Ada.Characters.Lat

如何将整数(例如33)的ascii值存储在字符中。我想在Ada83中有这样的东西,而不是95

C:代码

char c = 10;
char *k = &c;
strncat (des, k, 1);
printf("%s",des);
谢谢

C : Character := Character'Val(10);

第一个在Ada的所有版本中都有效。第二种是Ada 83中的标准方法;它现在已经过时了。较新的方法是

C : Character := Ada.Characters.Latin_1.LF;

更多信息:在Ada中,
字符
是枚举类型,而不是整数类型。因此,不能直接为其分配整数。
'Val
属性是将整数转换为枚举的Ada方法
Enum_Type'Val(N)
表示“为枚举类型定义的第N个枚举文字,0-relative”。另一方面,
Enum\u Type'Pos(E)
返回对应于
E
在枚举列表中位置的整数。

因此它类似于拉丁字母1和拉丁字母9的不同位存储大小?不,不是真的<代码>字符为8位,句点。0..127范围内的字符是旧的ASCII字符集,128..255范围内的字符通常表示拉丁语-1。然而,它们只是数字。如果您将输出设备配置为告诉它使用拉丁语-9、拉丁语-2、Windows-1252或其他语言,则相同的一些8位数字将在您的输出设备上以不同的方式显示。Ada与此无关。如果您希望能够一致地表示所有字符,而不必配置输出,则可以使用Unicode,这意味着在Ada中使用
Wide\u Character
(16位字符)或
Wide\u-Wide\u Character
(32位字符),它们使用更大的存储大小。
C : Character := Ada.Characters.Latin_1.LF;