c++ - apache thrift,序列化未签名

标签 c++ python serialization thrift

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

只要 Thrift 不适用于 unsigned int , 最好的转账方式是什么 unsigned

是否只有这样的方法:

  1. 将无符号赋值给有符号
  2. 序列化 -> 发送 -> 接收 -> 反序列化此签名
  3. 将有符号赋值给无符号

我应该一直手动执行还是已经有一些第三方库?

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

最佳答案

有两个有意义的选项(以及许多其他选项):

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

“其他一些”包括

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

但我再次推荐 1 或 2。

关于c++ - apache thrift,序列化未签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18758535/

相关文章:

c++ - boot::exception 消息上的第一次和第二次访问冲突

c++ - FlatBuffers:写入和读取二进制文件?

c# - 使用 XmlSerializer 反序列化随机/未知类型

c# - 如果基类被标记为可序列化,所有子类也被标记了吗?

python - 组合元组的二维列表,然后在 Python 中对它们进行排序

python - 替换Python中的双反斜杠和括号

c++ - 发出蜂鸣声直到有任何输入

c++ - 我无法使用两个 scanf 函数来输入字母

c++ - 编译 SDL 测试时出错

python - 从被抓取的页面上的链接中检索信息