假设我在 wchar_t x;
当然,将x
转换为ASCII 的明显方法是使用wctob。功能
但我想知道,因为 the first 255 characters of Unicode correspond with ASCII , 转换为 char
是否可以跨平台一致地工作?
char c = (char) x ; // cast to char, this works on Windows
问题是,转换为 char
会保证保留低位,还是可能保留高位? (我担心这里的小端/大端情况,虽然我意识到如果它在我的小端系统上工作,它肯定应该在大端系统上工作)。
最佳答案
为了简洁起见,我随意使用了一些术语。为避免混淆,强烈建议仔细研究 definitions至少包含以下术语:ASCII、Unicode、UCS、UCS-2、UCS-4、UTF、UTF-8、UTF-16、UTF-32、字符、字符集、编码字符集、指令集、编码单元。
字符“Q”的代码在 ASCII 和 Unicode 中都是 81。
81 只是一个整数,就像任何其他整数一样。 char
变量可以存储数字 81。wchar_t
变量可以存储相同的数字 81。在这两种情况下,我们解释 81 为“Q” .
询问数字 81 在从例如long
到 short
。如果合适,那么您就准备好了。没有字节序或高位或低位或任何涉及的东西。
当您转换通过网络存储字符或字节流的文件时,字节序和位以及其他东西开始变得重要,就像存储(二进制表示)任何旧数字的文件一样。
关于c - 转换是否会在整个系统中保持低位字节一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14035751/