Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从二进制文件读取2的补码(32位整数)

从二进制文件读取2的补码(32位整数)
EN

Stack Overflow用户
提问于 2012-10-22 11:31:29
回答 1查看 1.8K关注 0票数 1

好了,首先,大家好:)我正在运行Python3.2 x86 @ windows

所以我得到了一个二进制文件(6412字节),结构如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
header: 256 bytes
maxZ: 4 bytes (1 32-bit word)
Zvalues: 2048 bytes (512 32-bit words)
maxX: *same as maxZ*
Xvalues: *same as Zvalues*
maxY: *same as maxZ*
Yvalues: *same as Zvalues*

我知道(根据格式规范)数字存储为32位整数,写成2的补码

假设我不需要读取头文件,下面是我要做的(我有1539个4字节的样本要读):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import struct
file = open('C:/02.adb', 'rb')
file.seek(256)
fmt = '<i'
nbytes = 4
for i in range(1539):
    packed_data = file.read(nbytes)
    unpacked_data = struct.unpack(fmt, packed_data)
    print('Sample: ',i,'Value: ',unpacked_data[0])
file.close()

它读取文件并将其内容打印到stdout,但是符号有问题。我想我在这里不是把数字读成2的补码。如何改进脚本?

注意力的tnx

加法(23.10.12):

我意识到,通过编写一个更大的外部脚本的简短版本,我已经解决了主要问题本身--我自己的愚蠢。

可以从文件头读取的样本数量不是存储在其中的样本总数,而是ZXY值组合的数量,不包括存储在每个通道数据块的第一个字中的最大振幅。

以下是脚本的最终简短版本及其输出(是的,有符号int的python表示是‘2’的补码‘):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import struct
file = open('C:/02.adb', 'rb')
file.seek(256)
transfer_ratio = 31446.540881
fmt = '<i'
nbytes = 4
samples = []
for i in range(1539):
    packed_data = file.read(nbytes)
    unpacked_data = struct.unpack(fmt, packed_data)
    samples.append(int(unpacked_data[0])/transfer_ratio)
for i in range(32):
    print('Ch1_val: ',samples[i+1],' Ch2_val: ',samples[i+1+513],' Ch3_val: ',samples[i+1+(513*2)])
file.close()

输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Ch1_val:  42.20127119933322  Ch2_val:  36.47237399942374  Ch3_val:  -3.4996535999447054
Ch1_val:  41.37017819934635  Ch2_val:  36.64441199942102  Ch3_val:  -4.35822179993114
Ch1_val:  42.43585979932951  Ch2_val:  34.9874729994472  Ch3_val:  -4.125827399934812
Ch1_val:  44.08278179930349  Ch2_val:  34.42912859945602  Ch3_val:  -4.1604257999342655
Ch1_val:  44.50289159929685  Ch2_val:  35.507053199438985  Ch3_val:  -3.092836199951133
Ch1_val:  43.69110119930968  Ch2_val:  35.53335179943857  Ch3_val:  -2.613991799958699
Ch1_val:  42.73662419932476  Ch2_val:  34.1708807994601  Ch3_val:  -5.254886399916972
Ch1_val:  42.14097839933417  Ch2_val:  34.08460739946146  Ch3_val:  -8.582724599864394
Ch1_val:  41.982105599336684  Ch2_val:  35.58544019943775  Ch3_val:  -8.84688719986022
Ch1_val:  42.503816399328436  Ch2_val:  36.06170879943022  Ch3_val:  -6.777056999892922
Ch1_val:  43.17568679931782  Ch2_val:  35.291926199442386  Ch3_val:  -4.984618199921243
Ch1_val:  42.4303583993296  Ch2_val:  36.03750899943061  Ch3_val:  -4.502275799928864
Ch1_val:  39.92264219936922  Ch2_val:  38.354075399394006  Ch3_val:  -6.050744999904398
Ch1_val:  37.65501599940505  Ch2_val:  38.48181599939198  Ch3_val:  -9.010943399857627
Ch1_val:  37.04642759941466  Ch2_val:  35.152642199444585  Ch3_val:  -9.89107199984372
Ch1_val:  36.571876199422164  Ch2_val:  32.21988719949093  Ch3_val:  -7.850465999875962
Ch1_val:  34.488403799455085  Ch2_val:  32.62164839948458  Ch3_val:  -7.712485799878142
Ch1_val:  32.00259779949436  Ch2_val:  34.05570119946192  Ch3_val:  -11.215064999822802
Ch1_val:  31.132422599508107  Ch2_val:  33.44755799947153  Ch3_val:  -12.461179799803112
Ch1_val:  31.245853199506314  Ch2_val:  31.730771399498654  Ch3_val:  -8.723057999862176
Ch1_val:  30.40820939951955  Ch2_val:  31.03355639950967  Ch3_val:  -6.433076399898357
Ch1_val:  28.474165199550107  Ch2_val:  30.714824999514704  Ch3_val:  -9.730672799846255
Ch1_val:  26.481449999581592  Ch2_val:  29.53720739953331  Ch3_val:  -13.227496199791005
Ch1_val:  24.79611359960822  Ch2_val:  28.60448159954805  Ch3_val:  -12.1075955998087
Ch1_val:  23.74938479962476  Ch2_val:  28.95253259954255  Ch3_val:  -9.411305399851301
Ch1_val:  23.92663799962196  Ch2_val:  29.24305739953796  Ch3_val:  -8.856490799860067
Ch1_val:  24.37285559961491  Ch2_val:  28.72398599954616  Ch3_val:  -9.611549999848137
Ch1_val:  23.155774199634138  Ch2_val:  29.22521759953824  Ch3_val:  -10.701304199830918
Ch1_val:  20.822671799671003  Ch2_val:  31.46641799950283  Ch3_val:  -12.57088979980138
Ch1_val:  20.15302739968158  Ch2_val:  32.95071479947938  Ch3_val:  -13.581175799785417
Ch1_val:  21.440195999661245  Ch2_val:  32.28628559948987  Ch3_val:  -11.66643419981567
Ch1_val:  21.51502139966006  Ch2_val:  31.7910959994977  Ch3_val:  -8.843802599860268
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-22 20:11:46

我非常确定Python对带符号的整数使用two's complement numbers。一个常见的问题是endianness。规范应该说明数字是小端还是大端。在Python中,您可以使用<i>i进行加载。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13010551

复制
相关文章
Django官方为什么没有标准项目结构
Django官方并没有提供标准的项目结构,于是网上众说纷纭,百花齐放,一千个读者有一千个哈姆雷特。那我们该怎么设计项目结构呢?在回答这个问题之前,先了解一下Django原生的目录和文件都是干嘛的。
dongfanger
2020/12/10
1.1K0
Django官方为什么没有标准项目结构
[Python学习] Django 权限
本文为大家讲解 Django 框架里自带的权限模型,从理论到实战演练,带领大家了解 Django 里权限是怎么一回事。
py3study
2020/01/07
1.1K0
为什么查看的ARP表项中没有VLAN信息?
如果ARP表项没有VLAN信息,那么代表这条表项中的接口处于三层模式,是一个三层口;
网络工程师笔记
2021/05/17
1.9K0
为什么查看的ARP表项中没有VLAN信息?
django rbac权限
> startapp rbac models.py from django.db import models class User(models.Model): name=models.CharField(max_length=32) pwd=models.CharField(max_length=32) roles=models.ManyToManyField(to="Role") def __str__(self): return self.name class R
py3study
2020/01/19
8000
mysql查看用户的权限(sql查看用户拥有的权限)
mysql数据库授权链接如下: https://blog.csdn.net/GX_1_11_real/article/details/81200566
全栈程序员站长
2022/07/30
3.5K0
mysql查看用户的权限(sql查看用户拥有的权限)
linux查看权限命令
查看权限命令 查看目录的相关权限可以采用命令ls -lD,或者直接用ls -la 如 ls -l wwwt //这里表示查看www目录 修改权限命令 chmod 777 文件名 1.chmod 577 /home/stuser -R 2.umask -p 0200 3.chown XXXX YYYY (XXXX 为用户名 YYYY为文件名) 将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup: chown -R runoob:runoobgroup *
全栈程序员站长
2022/08/28
11.8K0
django自带权限机制
权限机制能够约束用户行为,控制页面的显示内容,也能使API更加安全和灵活;用好权限机制,能让系统更加强大和健壮。因此,基于Django的开发,理清Django权限机制是非常必要的。
人生不如戏
2018/09/27
1.5K0
五表权限_表格设置查看权限和编辑权限
设计基础:用户、角色、权限三大核心表,加上用户角色、角色权限两个映射表(用于给用户表联系上权限表)。这样就可以通过登录的用户来获取权限列表,或判断是否拥有某个权限。
全栈程序员站长
2022/11/11
3.9K0
五表权限_表格设置查看权限和编辑权限
DJANGO权限和分组
在使用authenticate进行验证后,如果验证通过了。那么会返回一个user对象,拿到user对象后,可以使用django.contrib.auth.login进行登录。示例代码如下:
用户2200417
2022/04/06
9410
mac查看、修改文件权限
在mac添加环境变量时,会发现使用sudo vim etc/profile 对该文件进行编辑完毕,保存时提示:
青山师
2023/05/04
1.6K0
Django Rest Framework 权限(下)
像 Django进阶篇 Rest framework (七) 一样进入,request 的请求流程,进入源码查看具体权限的操作。
小团子
2019/07/18
4160
Django Rest Framework 权限(下)
Django Rest Framework 权限(上)
为了更好的管理各个功能组件,在 django rest framework 认证中,可以将认证类单独的拿出来,放在其它目录下,然后导入到 views.py 文件中,在权限环节也可以这么做。
小团子
2019/07/18
9510
Django Rest Framework 权限(上)
Django REST Framework-权限
Django REST Framework(DRF)为开发人员提供了一种灵活的权限系统,该系统可让您轻松地在API中管理和保护敏感数据。权限系统基于“允许访问的用户”和“访问用户的操作”进行配置,使您可以完全控制API的访问级别。
玖叁叁
2023/04/25
6610
django权限管理(Permission)
什么是权限管理 权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自 己被授权的资源 权限管理好比如钥匙,有了钥匙就能把门打开,但是权限设置是有级别之分的,假如这个 系统有多个权限级别就如一间屋有多个门,想要把所有门都打开您必须要取得所有的钥 匙,就如系统一样。 django权限机制 django权限机制能够约束用户行为,控制页面的显示内容,也能使API更加安全和灵活;用好权限机制,能让系统更加强大和健壮 django权限控制 Django用user,group和permis
程序员同行者
2018/07/02
6.7K1
Django权限机制的实现
权限机制能够约束用户行为,控制页面的显示内容,也能使API更加安全和灵活;用好权限机制,能让系统更加强大和健壮。因此,基于Django的开发,理清Django权限机制是非常必要的。 1.1 Django的权限控制
菲宇
2019/06/13
1.1K0
Django权限机制的实现
Django内置权限扩展案例
overmind项目使用了Django内置的权限系统,Django内置权限系统基于model层做控制,新的model创建后会默认新建三个权限,分别为:add、change、delete,如果给用户或组赋予delete的权限,那么用户将可以删除这个model下的所有数据。
37丫37
2019/03/14
8930
Django内置权限扩展案例
使用show effective grants查看权限
用户 show grants 显示只有连接权限,但该用户却能执行 sbtest.*下的所有操作
GreatSQL社区
2023/08/11
2460
使用show effective grants查看权限
Ubuntu 文件文件夹查看权限和设置权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
用户5005176
2021/08/25
13.3K0
django权限管理例子_创建django项目的命令
上一篇我们分析了认证的源码,一个请求认证通过以后,第二步就是查看权限了,drf默认是允许所有用户访问
全栈程序员站长
2022/09/19
3960
为什么没有运营的SaaS没有未来?
来源:大虫运营心经  作者 : 花大虫 ---- 职业生涯前几年一直在做C端互联网相关的工作,这两年突然转做B端了,感受有很大的差异,但是却又有很大的相似性,To C的运营经验对To B的运营有巨大的帮助。越做越觉得To B行业有意思,大有可为。 最近我会把近2年亲身经历的一些To B行业运营经验分享给大家。 万信是我现在创业在做的一家餐饮SaaS公司,后面文章中会有涉及。 ✎✎✎ 大家谈To B都会讲产品、讲销售,很少人会讲到运营。殊不知一个To B产品的运营非常关键,因为这直接决定了一个非常重要
腾讯SaaS加速器
2020/06/09
9550

相似问题

Django 2.1查看权限

20

Django模型只读/查看权限+行级权限

12

Django内联用户权限+仅查看-权限问题

10

如何修改django以创建“查看”权限?

64

Django admin -通过权限限制用户查看

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文