在输入中查找十六进制字符串在macworks中读取python3,在ubuntu中失败



我在文件的前48个字节中有以下数据:(十六进制(:

FF D8 FF E1 3F B1 45 78 69 66 00 4D 00 2A 00

00 08 00 0B 01 0E 00 02 00 00 08 00 00 00 92

01 0F 00 02 00 00 12 00 00 9 a 01 10 00 02 00

然后我读了它们,并试图找到字符串4D 4D 00 2A

("xif"是字符串:45 78 69 66(

fn.seek(0,0)
first_32_byte=str(fn.read(34))
print(first_32_byte)
print(first_32_byte.upper())
if (first_32_byte.upper().find('EXIF') >= 0) :
print('EXIF Found')
tiff_hdr=first_32_byte.find('x4Dx4Dx00x2A')
print(' tiff_hdr=',tiff_hdr)

正确找到字符串"Exif"。

在UBUNTU python3上,我得到tiff_hdr=-1(即未找到字符串(

在Mac python 3上,我得到了tiff_hdr=12(十进制(

怎么可能????

已解决。显然,这个版本的Ubuntu python3(3.8.10-2021年9月28日(加强了字符串和字节之间的类型检查。通过从读取的文件中删除str重新键入,first_32_bytes变成了一个字节对象。当搜索字符串"Exif"时,有必要重新键入str,并且通过在搜索x4D4D002A时使搜索字符串也是字节对象,这一切都可以再次工作。pffftt。。。

最新更新