首页 > 解决方案 > 如何将两个有符号整数编码为一个数字,并能够用正确的符号恢复它们?

问题描述

StackOverflow 上有多种针对无符号整数的解决方案。想知道在以下代码中要更改什么以使其也适用于有符号整数。

#works only for unsigned integers
bits=16
def encode(x,y):
    return (x<<bits) | y

def decode(encoded):
    #return (encoded>>bits, encoded & ~(~0 <<bits))
    return (encoded>>bits, encoded & 0xFFFF)

if __name__=="__main__":
    encoded=encode(3,-15)
    print(decode(encoded))

标签: encodingbit-manipulationdecoding

解决方案


推荐阅读