如何将python long转换为c unsigned int?

时间:2014-03-28 19:02:09

标签: python thrift type-conversion unsigned-integer

我正在尝试从python发出一个节俭的IDL调用。一个变量的thrift数据类型是I32。 我需要发送0到2 ^ 32-1之间的值。对于2 ^ 31和2 ^ 32-1之间的值,python将它们转换为long。所以,我收到一条错误,说“' i'格式代码'对于这些价值观。我尝试过转换为ctypes.c_uint32。那没起效。 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

这不是Python问题,而是您在i32字段中误解了哪些数字会产生误解。

来自Thrift: The Missing Guide

  

请注意,Thrift 不支持无符号整数,因为它们在许多Thrift的目标语言中没有直接转换为本机(原始)类型。

来自Thrift Types documentation

  

请注意缺少无符号整数类型。这是因为许多编程语言中没有本地无符号整数类型。

强调我的。

底线是2 ^ 31及以上的值不适合无符号i32 32位int。如果您需要使用超过2 ^ 31-1到2 ^ 63-1的值,请使用i64类型。

相关问题