我必须将给定的 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(使用前将#替换为@)