首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有中间件/库可以将你的二进制或文本数据从64位转换到32位?

有没有中间件/库可以将你的二进制或文本数据从64位转换到32位?
EN

Stack Overflow用户
提问于 2013-12-06 11:42:22
回答 1查看 302关注 0票数 0

我们在前端(Windows32位)和后端(Linux64位)都使用C++。它们可以传递二进制或文本数据进行通信。有没有中间件/库可以将这些数据从64位转换到32位?或者是更改代码的唯一选择?

EN

回答 1

Stack Overflow用户

发布于 2013-12-06 13:23:29

没有像“64位文本数据”这样的东西。文本文件只包含某种编码形式的字符。而且目前还没有可用的64位编码。最长的固定宽度编码是UTF-32,它是32位长。对于可变长度编码,UTF-8的最大长度为6字节长(编辑:由于Unicode的范围是restricted to U+10FFFF,它已被正式命名为limited to 4 bytes only ),其他编码的长度也不同,但都不超过8字节长。如果存在差异,则需要将编码转换为32位,而不是64位

有关更多信息,请阅读The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

二进制也只是一系列位,不一定是恒定宽度的64位或32位数组,尽管在现代计算机体系结构中,大小是字节的倍数。您需要完全按照写入的方式读取数据。如果您写入64位值,请将其作为64位值读取,而不管是16位、32位还是64位程序。如何确保64位写入的数字在裁剪为32位时不会溢出?

如果你使用的是MSVC,那么在32位和64位模式下,除了指针之外,字体大小是相同的,因此,如果你坚持使用标准,就不需要修改代码。在大多数其他64位平台上,如果您使用long,您可能需要小心,因为它比32位程序更广泛。

最好在跨平台代码中使用C++11的标准类型,如cstdint中的intN_t。在C++11和C99之前,许多库和编译器也定义了自己的标准固定宽度整数类型,例如qint32 in Qt__int32 in MSVC

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20415537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档