繁体   English   中英

Python二进制相反操作

[英]Python binary opposite operations

我有两个数字:

num1 = 1
num2 = 1

然后有人对他们进行了秘密操作:

mask = 2**8 -1
secret = (num1 << 8) | (num2 & mask)
>>> 257

我怎样才能做与秘密操作相反的事情? 2571 1

这是将 2 个小整数编码成一个大整数的标准方法

它的 16 位数据代表 2 个 8 位整数

要取回第一个(高 8 位),您可以将其以另一种方式移动

256 >> 8

使用原始掩码获取低 8 位

256 & (2**8-1)

如评论中所述,大多数整数是 int32(32 位,而不是 8),如果 num2 的值大于 255,则您可能无法恢复它,因为 8 位只能表示 0-255

顺便说一句,我想大多数人会使用 (1<<8)-1 而不是 2**8-1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM