python的定宽整数及其计算
uint的Python项目详细描述
单位
python的固定宽度整数和计算
$ pip install uint
python的固定宽度整数
uint提供了两个类:Uint
和Int
。它们的计算方式类似于int
,但宽度是固定的,因此它们的行为方式类似于您熟悉的……就像C语言一样。
In [1]: from uint import Uint, Int
In [2]: u, i = Uint(0xff, 8), Int(0xff, 8)
In [3]: u
Out[3]: <uint8, value=255>
In [4]: i
Out[4]: <int8, value=-1>
In [5]: u << 2 >> 1
Out[5]: <uint8, value=126>
In [6]: i << 2 >> 1
Out[6]: <int8, value=-2>
当然,当您喜欢时,它们会溢出:
In [1]: from uint import Uint, Int
In [2]: u, i = Uint(0xff, 8), Int(0x7f, 8)
In [3]: u, i
Out[3]: (<uint8, value=255>, <int8, value=127>)
In [4]: u+1, i+1
Out[4]: (<uint8, value=0>, <int8, value=-128>)
在多个字段中注册
该软件包的初衷是减少在多个mcu和soc中计算“寄存器值”的工作量。有关详细用法,请参见examples
目录。
In [1]: from uint import Register
In [2]: reg = Register('reg')
In [3]: reg[15:8] = 'f1'
In [4]: reg[7:0] = 'f2'
In [5]: reg['f1'] = 0x5A
In [6]: reg['f2'] = 0x0F
In [7]: hex(reg.encode())
Out[7]: '0x5a0f'
In [8]: reg.decode(0x1234)
In [9]: reg['f1'].value.wire.hex
Out[9]: "8'h12"
In [10]: reg['f2'].value.wire.hex
Out[10]: "8'h34"