跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Python 二进制读文件 转换 float 失败
未分類
4 10 月 2020

Python 二进制读文件 转换 float 失败

Python 二进制读文件 转换 float 失败

資深大佬 : woshichuanqilz 2

python 代码

    sacfile = 'binfile'     f = open(sacfile, 'rb')     hdrBin = f.read()[:4]     print(hdrBin)     sfmt = 'f'     hdrFmt = struct.Struct(sfmt)     m_header = hdrFmt.unpack(hdrBin) 

输出结果

b'<xa3xd7n’

但是我用 winhex 查看源文件 第一位是 3C 被转换成 ‘<‘ 了 winhex 前八个字节的数据

3CA3D70AC7572000

问题是我需要把前四个 byte 转换为 float 数据, 就是”m_header”

我拿到的结果是错的: 2.0765148849577988e-32

正确的结果应该是: 0.02000000 这个问题怎么解决?

binfile 在这里

https://gitee.com/lovelife_lizhe/ori_data/raw/master/binfile

大佬有話說 (4)

  • 資深大佬 : lcdtyph

    大端续,sfmt 改一下

  • 資深大佬 : lcdtyph

    大端序
    @lcdtyph

  • 主 資深大佬 : woshichuanqilz

    @lcdtyph Thanks 已感谢

  • 資深大佬 : peonone

    是大小端的问题,文件是小端的,你是用大端的格式读出来的,把 sfmt 改成’>f’就能得出你要的结果

    至于 3C 和'<‘, 内容是完全一样的,只是 Python 将 3C 这个字节用 ASCII 的形式展现出来而已 b'<‘[0] == int(‘3C’, 16)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具