是否有任何中间件/库可以将二进制或文本数据从64位转换为32位

Is there any middleware/library that will convert your binary or text data from 64-bit to 32-bit?

本文关键字:数据 文本 64位 32位 转换 二进制 中间件 任何 是否      更新时间:2023-10-16

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

没有像"64位文本数据"这样的东西。文本文件只包含某些编码中的字符。目前还没有可用的64位编码。最长的固定宽度编码是32位长的UTF-32。对于可变长度编码,UTF-8的最大长度为6字节(编辑:它被官方限制为4字节,只是因为Unicode的范围被限制为U+10FFFF),其他编码的长度则不同,但没有一个长度达到8字节。如果有差异,那么你需要转换编码,而不是64位到32位

欲了解更多信息,请阅读The Absolute Minimum Every Software Developer Absolute,Positive 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之前,许多库和编译器也定义了自己的标准固定宽度整数类型,例如Qt中的qint32和MSVC 中的__int32

  • 用C语言将32位应用程序转换为64位应用程序
  • 如果传递长类型,32位客户端如何与64位服务器通信
相关文章: