You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python二进制数据格式转换问题:图片存储格式不符合需求

二进制文件转数据库存储格式问题

问题场景

首次处理二进制文件,需将一张1x1像素的图片存入数据库。用Python以二进制模式读取图片后得到的格式,与数据库要求的存储格式不匹配。

当前读取的二进制结果

b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01\x01\x03\x00\x00\x00%\xdbV\xca\x00\x00\x00\x03PLTE\x00\x00\x00\xa7z=\xda\x00\x00\x00\x01tRNS\x00@\xe6\xd8f\x00\x00\x00\nIDAT\x08\xd7c`\x00\x00\x00\x02\x00\x01\xe2!\xbc3\x00\x00\x00\x00IEND\xaeB`\x82'

数据库要求的存储格式

0x89504e470d0a1a0a0000000d494844520000000100000001010300000025db56ca00000003504c5445000000a77a3dda0000000174524e530040e6d8660000000a4944415408d76360000000020001e221bc330000000049454e44ae426082

现有读取代码

with open("1x1.jpg", 'rb') as File:
    binaryData=File.read()
    print(binaryData)

注:该图片为1x1空像素图,原PNG格式图片来自维基共享资源,扩展名被改为jpg。


解决方案

使用Python的binascii.hexlify()方法,可将二进制数据直接转换为数据库需要的十六进制格式,代码如下:

import binascii

with open("1x1.jpg", 'rb') as File:
    binary_data = File.read()
    # 将二进制转十六进制字节串,再解码为普通字符串
    hex_str = binascii.hexlify(binary_data).decode('utf-8')
    # 添加数据库要求的0x前缀
    db_compatible_format = f"0x{hex_str}"
    print(db_compatible_format)

说明

  • binascii.hexlify()会把二进制字节转换为对应的十六进制字节串(比如b'\x89'会变成b'89')
  • 调用.decode('utf-8')将字节串转为普通字符串,方便后续拼接前缀
  • 最后拼接0x前缀,即可得到符合要求的存储格式

另外注意:虽然文件扩展名被改为jpg,但实际仍是PNG格式,用rb模式读取不会影响二进制数据的完整性。

内容的提问来源于stack exchange,提问作者Vricken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 12:57:11