如何使用位移在Python中构建一个简短的char?

时间:2012-11-01 12:44:32

标签: python bit-shift

我有两个char 8位值需要组合才能构建一个短的16位值。

在C ++中,我会这样做:

unsigned char lower = <someValue>;
unsigned char upper = <anotherValue>;
unsigned short combined = lower + (upper << 8);

我如何在Python v2.6.2中做同样的事情?

看起来它在Python中会是一样的,但我想确保没有一些细微的差别:

lower = <someValue>
upper = <anotherValue>
combined = lower + (upper << 8)

1 个答案:

答案 0 :(得分:1)

可能有点矫枉过正,但如果你真的想要避免任何隐藏的差异,我建议使用 ctypes 回到C:

lower = ctypes.cschar(<somevalue>)
upper = ctypes.cschar(<anothervalue>)
combined = ctypes.csshort( lower + (upper << 8) )

这样做,你可以拥有硬变量的变量,这将使调试变得更容易。

注意:我不确定是否&lt;&lt;运算符仍然适用于ctypes(没有理由不)。