我需要将给定的16位整数转换为两个8位整数,然后将它们用作输出。接收方会将这两个8位整数重新组合成一个16位输入(很遗憾,我不能控制接收方)。我的解决方案虽然可行,但感觉不够简洁。对于粗略的数字,我是通过位移原始数字来实现的,对于精细的数字,我是取模256来实现的。
那么,我应该使用floor division来得到粗略的数字,还是应该取最低的8位来得到精细的数字(如果是,应该怎么做?)?
或者说我是疯了,以两种不同的方法拆分数字并不是一个问题吗?
那么,我应该使用floor division来得到粗略的数字,还是应该取最低的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
return divmod(x, 256)
? - Mark Dickinsonc = x >> 8 f = x & 0xff # 这是我之前不知道的。
这似乎比 divmod 或 % 和 / 更符合我的操作,也更有可能接近在另一端执行重新组合它们的操作(我希望如此)。 - nrn