OCaml字符是否正好代表8位



从Char库文档中,我发现字符至少能够表示ISO/IEC 8859-1字符集,即每个字符使用8位的字符集。OCaml字符是否正好代表8位,不多也不少?这些记录在哪里?

文档中这样写道:

字符值表示为0到255之间的8位整数。0和127之间的字符代码按照ASCII标准进行解释。当前的实现按照ISO 8859-1标准解释128和255之间的字符代码。

所以是的,OCaml字符正好代表8位。

基本值的文档如下:OCaml手册,第9.2章。价值观

更新

值得注意的是,尽管OCaml中的char值只能取0到255之间的值,但在主线OCaml版本(来自INRIA(中,char值在内存中占用的实际空间与int相同。在32位的实现中,这将是32位,而在64位的实现中将是64位。因此(例如(char array不是存储多个chars的节省空间的方法。您可以使用stringbytes来获得字符值的紧凑存储(每个值为8位(。

OCaml值表示的文档如下:OCaml手册,第20.3章,OCaml数据类型的表示。

根据OCaml语言和运行时的实现,char类型的表示可能会有所不同。虽然所有字符都应适合8位,但一个实现可以使用更大的类型来表示它。Char抽象保证不可能创建使用超过8位的字符。尽管OCaml的INRIA实现表示Char.tInt.t相同,但它仍然依赖于char将适合8位的假设。例如,n个字符的大数组将占用n个字节。并且String.t将具有与组成字符串的字符数成比例的以字节为单位的大小。最后但并非最不重要的是,各种外部(即用C实现(函数和优化的编译器本身将假设一个字符适合8位。

相关内容

  • 没有找到相关文章

最新更新