2

目前我需要在 C++ 和 Python 应用程序之间传输数据。

只要 Thrift 不适用unsigned int,那么最好的转移方式是unsigned什么?

是否只有这样的方法:

  1. 将未签名分配给已签名
  2. 序列化 -> 发送 -> 接收 -> 反序列化这个签名
  3. 将有符号分配给无符号

我应该一直手动操作还是已经有一些 3rd 方库?

对于 C++/Python 应用程序,我该怎么做?在 C++/C++ 应用程序中,我可以只static_cast<signed/unsigned>(unsigned/signed)进行转换,但是 Python 呢?

4

1 回答 1

3

有两个有意义的选项(以及其他一些选项):

  1. 在 Thrift 中使用下一个最大的有符号整数。当然,使用 UINT64 这是不可能的,因为没有 i128,但它可以工作到 UINT32
  2. 将无符号位转换为有符号位。不是很干净,需要文档,但它可以工作。

“其他人”包括

  • 将其转换为字符串并返回。看着你的表现下降。
  • 使用二进制类型。好的,这有点远,但仍然有可能,只需像上面的 2. 一样重新解释这些位即可完成

但是,我再次推荐 1. 或 2。

于 2013-09-12T18:47:35.090 回答