C语言 uint8_t在Python中的翻转?最好或最优雅的方式是什么?



在C中,我可以做以下操作:

uint8_t number;
number++;

注意:如果数字为>255,则滚动到0。

我怎么做Python?

number += 1
if number>255:
number = 0

这对我来说不是最优的或python的方式。什么好主意吗?

Python提供任意大小的整数。有一种整数类型可以容纳任何大小的整数。

可以通过在自增后使用mod 256来避免使用if语句。

number = (number + 1) % 256

您可以自由地执行所有标准的数学操作,并且每当您需要字节范围内的输出时,只需使用number % 256而不是number。或者您可以将此方法扩展到一个类,并在其中定义所有标准操作符(__add__(),__neg__(),…)。或者您可以使用ctypes模块中的c_ubyte数据类型。

您可以使用ctypes模块,它提供了c中存在的数据类型。

from ctypes import *
a=c_uint8(255)
b=c_uint(1)
c=c_uint8(a.value + b.value)
print(a, b, c)

输出
(c_ubyte(255), c_ulong(1L), c_ubyte(0))

最新更新