【发布时间】:2015-07-16 20:34:13
【问题描述】:
所以我认为以前有人问过这样的问题,但我在实现这一点时遇到了很多麻烦。
我正在处理包含 -1 和 1 之间的浮点数的 CSV 文件。所有这些浮点数都必须转换为没有前导“0b”的 16 位 2s 补码。从那里,我将该数字转换为 2s 补码的字符串表示形式,所有来自 CSV 的数字都将被写入一个 .dat 文件,中间没有空格。例如,如果我读入 CSV 文件并且它有两个条目 [0.006534, -.1232],我会将每个条目转换为它们各自的 2s 补码,并将它们一个接一个地写入 .dat 文件。
问题是我在如何将浮点数转换为 16 位 2s 补码的代码中陷入困境。我一直在看this 之类的其他帖子,有人告诉我使用 .float() 函数,但我没有运气。
有人可以帮我写一个脚本来接受浮点数,并返回它的 16 位 2s 补码字符串吗?它必须正好是 16 位,因为我正在处理 MIT 16 标准。
我正在使用 python 3.4 顺便说一句
【问题讨论】:
-
“16 位 2s 补码”描述了 16 位整数类型。它不能用于表示小数值。您的意思是要将值从 [-1…1] 缩放到 [-32768…32767]?
-
嗯,我不完全确定。让我问问我的主管。
-
我正在处理设备上记录的心电图数据,转换为 WAV,提取十进制值。我想我需要做更多的研究
-
这就是我得到的“每个样本都由一个 16 位二进制补码幅度表示,首先存储最低有效字节。任何未使用的高位都从最高有效位进行符号扩展。格式用于 MIT-BIH 和 AHA 数据库分发的 9 轨磁带是格式 16,在逻辑 EOF 之后添加了逻辑 EOF(八进制 0100000)和空填充。”
-
@J.F.Sebastian 我很抱歉在 cmets 中回复。最初,输入是一个包含 f.p. 的 .CSV 文件。 .WAV 文件(心电图记录)中的振幅值。所以我有一个 .WAV 和一个 .CSV 文件。首先,我尝试使用 physionet 提供的 WAV2MIT.c 文件,但遇到了一些问题。但是,在我最后的评论中,我说明了我是如何转换 f.p. 的。值到正确的 2s 补码格式。
标签: python python-3.x floating-point twos-complement