【发布时间】:2021-08-29 21:20:26
【问题描述】:
在我询问了有关此代码的问题(以查找图像的分辨率)后,
with open("image.jpg",'rb') as file:
file.seek(163)
a = file.read(2)
height = (a[0] << 8) | a[1]
a = file.read(2)
width = (a[0] << 8) | a[1]
print(str(height) + " x " + str(width))
我得到了很多答案,这让我提出了更多问题。其中之一是我可以使用按位运算符将二进制更改为十进制吗?
让我告诉你我得到了什么,并告诉我是否有更好的方法。
a = 0b11 #which is 3 in decimal
b = a >> 2 #2 is the length of a
print(a | b)
print(b | a)
a = 0b1000000000 #which is 512 in decimal
b = a >> 10 #10 is the length of a
print(a | b)
print(b | a)
它有效。即使
a = 0b11
b = a >> 10000000000
print(a | b)
答案还是一样。
【问题讨论】:
-
代码没有将二进制转换为十进制。该代码占用两个字节并生成一个 Int16。字节是高字节,然后是低字节。所以代码将第一个字节移动 8 位,然后对 LSB 进行 OR'ing。以下格式为二进制:a = 0b11,与 a = 3 相同。
-
我应该对按位进行更多研究还是只使用 PIL 库?
-
代码没有问题。它是有效的。我不喜欢使用库进行简单的操作。
标签: python binary decimal bitwise-operators