假设我在wchar_t x;中有一个unicode字符
当然,将x转换为ASCII的明显方法是使用wctob函数
但我想知道,既然the first 255 characters of Unicode correspond with ASCII,cast tochar是否能在平台间持续工作?

char c = (char) x ; // cast to char, this works on Windows

问题是,转换为char是否保证保留低阶位,或者可能保留高阶位?(我很担心这里的一个小endian/big endian的情况,虽然我意识到如果它在我的小endian系统上起作用,它肯定应该在big endian系统上起作用)。

最佳答案

为了简洁起见,我使用了一些术语。为了避免混淆,强烈建议您仔细研究至少以下术语的definitions:ASCII、Unicode、UCS、UCS-2、UCS-4、UTF、UTF-8、UTF-16、UTF-32、字符、字符集、编码字符集、曲目、代码单元。
字符“Q”的代码在ASCII和Unicode中都是81。
81和其他整数一样,只是一个整数。变量可以存储数字81。变量可以存储相同的数字81。在这两种情况下,我们都将81解释为“Q”。
当从char转换到wchar_t时,询问数字81是如何保存的,这没有多大意义。如果合适的话,你就准备好了。没有末端或高位或低位,也没有任何相关的东西。
当你在网络上转换存储字符或字节流的文件时,端性、位和其他东西开始起作用,就像存储任何旧数字(二进制表示)的文件一样。

关于c - 强制转换会在整个系统中保持低位字节一致吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14035751/

10-11 15:09