在Python中将一个16位整数拆分为两个8位整数

2024-01-12

我必须将给定的 16 位整数转换为两个 8 位整数,然后将其用作输出,它们的标题是获取两个 8 位整数并将它们重新组合为 16 位输入(不幸的是,这超出了我的控制范围)。我的解决方案有效,但感觉不干净。对于粗略数字,我对原始数字进行了位移位;对于精细数字,我将其取模 256。

那么我应该对粗略数字进行楼层除法,还是应该对精细数字进行最低 8 位(如果是这样怎么办?)?

或者我疯了,使用两种不同的方法来分割数字不是问题?

def convert(x):
    ''' convert 16 bit int x into two 8 bit ints, coarse and fine.

    '''
    c = x >> 8  # The value of x shifted 8 bits to the right, creating coarse.
    f = x % 256  # The remainder of x / 256, creating fine.
    return c, f

我会做

c = (x >> 8) & 0xff
f = x & 0xff

它更安全,请参见例如

>>> (10303 >> 8) & 0xff
40
>>> (1030333333 >> 8) & 0xff
163
>>> (1030333333 >> 8) 
4024739

因为在 python 中你不能control如果该数字是或不是 16 位,则必须将其强制转换为最多 16 位值。如果您确定有一个 16 位值,则不需要这样做,但这样该函数更加通用,并且允许您只对 16 位值感兴趣,无论容器包含什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中将一个16位整数拆分为两个8位整数 的相关文章

随机推荐