gpt4 book ai didi

将 C 字符串转换为 Pascal 字符串

转载 作者:太空宇宙 更新时间:2023-11-04 01:48:29 25 4
gpt4 key购买 nike

将C 字符串转换为Pascal 字符串时,为什么原始字符串的长度应小于或等于127 而不是256?我知道 unsigned int 的范围是 0~256,signed 的范围是 -128~127,但是 Pascal 字符串的第一个字符不是无符号的吗?

最佳答案

您所指的 Pascal 字符串可能是旧版 Pascal 中使用的字符串(在例如 Delphi 和 FreePascal 中称为 ShortString,目前最流行的 Pascal 实现)。它可以包含 255 个单字节字符(C 中的 char)。 无需将其限制为 127 个字符

也许您正在考虑 255 个字节只能包含 127 个 UTF-16 代码点这一事实。但这些字符串在旧的 CP/M 和 DOS 时代很流行,当时还没有人对 Unicode 有任何了解,并且被设计成包含 ASCII 或“扩展 ASCII”(8 位,使用代码页)。

但是大多数现代 Pascal 实现允许您使用最大 2 GB 的字符串。在那里,长度指示器不再存储为第一个元素,只是靠近文本数据。如今,大多数这些字符串也可以包含 Unicode,作为 UTF-16 或 UTF-8,具体取决于您选择的字符串类型(现代 Pascal 实现有几种不同字符串类型用于不同目的,因此不再有单一的“Pascal 字符串类型”)。

有些语言确实能够限制 ShortString 的大小,即所谓的“计数”字符串:

var
s: string[18];

该字符串最多包含 18 个字节的文本数据和 1 个字节的长度数据(在索引 0 处)。这种较短的字符串可以用在记录中,因此它们不会变得太大。

关于将 C 字符串转换为 Pascal 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48551148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com