python中合法的二进制整数_Python中二进制数的二进制补码_weixin_39616693的博客-程序员信息网

技术标签: python中合法的二进制整数  

低于a和b(十六进制),表示二进制补码有符号二进制数.

例如:

a = 0x17c7cc6e

b = 0xc158a854

现在我想知道一个&的签名代表.基础10中的b.抱歉,我是一名低级程序员,也是python的新手;问这个问题感觉非常愚蠢.我不关心额外的图书馆,但答案应该简单明了.背景:a& b是从UDP分组中提取的数据.我无法控制格式.所以请不要给我一个答案,假设我可以事先改变那些变量的格式.

我转换了一个& b用以下内容进入以下内容:

aBinary = bin(int(a, 16))[2:].zfill(32) => 00010111110001111100110001101110 => 398969966

bBinary = bin(int(b, 16))[2:].zfill(32) => 11000001010110001010100001010100 => -1051154348

我试图做这样的事情(不起作用):

if aBinary[1:2] == 1:

aBinary = ~aBinary + int(1, 2)

在python中执行此操作的正确方法是什么?

解决方法:

您至少必须知道数据的宽度.例如,0xc158a854有8个十六进制数字,因此它必须至少为32位宽;它似乎是一个无符号的32位值.我们可以使用一些按位操作来处理它:

In [232]: b = 0xc158a854

In [233]: if b >= 1<<31: b -= 1<<32

In [234]: b

Out[234]: -1051154348L

这里的L标志着Python 2已经切换到将值作为long处理;它通常并不重要,但在这种情况下表示我一直在处理此安装的公共int范围之外的值.从诸如UDP分组的二进制结构中提取数据的工具是struct.unpack;如果您只是告诉它您的值是首先签名的,它将产生正确的值:

In [240]: s = '\xc1\x58\xa8\x54'

In [241]: import struct

In [242]: struct.unpack('>i', s)

Out[242]: (-1051154348,)

假设两个补码表示;一个补码(例如UDP中使用的校验和),符号和幅度,或IEEE 754浮点数是一些不太常见的数字编码.

标签:python,python-2-7,hex,binary

来源: https://codeday.me/bug/20190717/1490315.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39616693/article/details/110080594

智能推荐

DropDownList 三级联动查询 简单用法_dropdownlist选中触发查询‘_RyoL的博客-程序员信息网

需要刷新页面的, 非无刷新联动.前台随便弄的:省:市:区:后台也随便弄的: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.

super( test, self).__init__()_super(test, self).__init__()_nasa110的博客-程序员信息网

python中的super( test, self).__init__()首先找到test的父类(比如是类A),然后把类test的对象self转换为类A的对象,然后“被转换”的类A对象调用自己的__init__函数

Kubernetes中的Volume介绍_dianfu2892的博客-程序员信息网

Kubernetes中支持的所有磁盘挂载卷简介发表于 2018年1月26日Weihai Feb 10,20167400 字 | 阅读需要 15 分钟容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题。首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失——容器以干净的状态(镜像...

憨豆爱编程之python来整蛊_weixin_43421712的博客-程序员信息网

Python是时下特别流行的开发语言,没有接触过得朋友可能觉得很高深,其实她的语法特别简单易学, 下面给大家来一段简单的代码,看看她能做什么,大家可以拿来整蛊一下你身边的朋友.在快乐中学习编程知识. 我们要做的就是在一个设定的时间内锁定电脑的鼠标和键盘, 14行代码, 设定好启动时间和次数, 在你朋友离开的时候悄悄在她(他)电脑上运行, 到了设定的时间,她的电脑就会像中了邪一样不听使唤了...

A - Jungle Roads POJ - 1251( 最小生成树 kruskal )_九羽-的博客-程序员信息网

A - Jungle Roads POJ - 1251( 最小生成树 kruskal )The Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. ...

是否应该开启WebView硬件加速?_webview加速wps开还是guan_「已注销」的博客-程序员信息网

android webview 在3.0+后显示flash要启用硬件加速,开启硬件加速也能够使绘制更加平滑。 开启硬件加速是在manifest中加入: android:hardwareAccele...

随便推点

10分钟搞定linux编辑器vim的配置_linux vim配置_谁把钱丢了的博客-程序员信息网

前言Vim是linux操作系统的一款非常强大的编辑器,配置Vim就是要让其形成一个像VS一样的IDE集成环境。所以为了能在linux下实现高效编程和开发,Vim的配置是必须要完成的一项任务。然而,对linux初学者而言,这无非是一个难度不小的挑战。但几乎每个初学者接触linux时,都会被要求配置vim,在网上搜索“vim配置”就会出现很多文章:网上诸如此类的教程有很多,给出的效果图也很高大上(所有在

【鸿蒙】HarMonyOS的UI组件学习四之自定义选项卡_移动ui界面 界面中含有四个配参选项卡_笔触狂放的博客-程序员信息网

今天分享一个手机应用主界面的选项卡页面,可能很多朋友不理解什么叫选项卡界面,那么接下来举几个栗子:大家都熟悉QQ这个应用软件,那么整个软件其实就分为三大类,消息,联系人,动态,点击界面的最下面的三个进行切换不同的页面,那么这三个就称为选项卡,再比如微信:微信软件的主界面也是这种结构,只不过它下面是四个选项卡,微信,通讯录,发现,我,如果大家观察的比较仔细一点,有些软件也可能会出现五个选项卡,甚至有些软件的选项卡不在界面的底部,可能在界面的顶部。所有在手机和平板等移动设备中,这个选项卡的功能使用率非

python学习重点笔记——运算符_冻书的博客-程序员信息网

·赋值运算符①可进行连续赋值操作,例:a = b = c = 20②可进行加减等运算赋值,例:a = 20;b = a + 10·算术运算符乘法‘*’可与字符串进行连接,例:5 * ‘abc’,结果会输出5个abc 除法‘/’and‘//’两种,‘/’表示普通除法,与平常数学计算相同,除不尽会有小数部分;‘//’整除。(注意:不允许使用0作为除数) 求余‘%’,可以对浮点型数据...

【数据结构】栈和队列相关面试题_码农印象的博客-程序员信息网

栈和队列面试题(c语言实现) 1.实现一个栈,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值)的时间复杂度为O(1). 2.使用两个栈实现一个队列 3.使用两个队列实现一个栈 4.元素出栈、入栈的合法性。如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1) 5.一个数组实现两个共享栈 1.实现一个栈,要求实现Push(入栈)...

使用 Tinymce 上传本地视频到七牛以及视频预览_tinymce七牛上传_MrQiuGH的博客-程序员信息网

官网后台又加一个新需求,那就接上一篇的接着说,在 Vue 中使用 Tinymce 富文本编辑器 + 上传图片到七牛确保引入了media插件import 'tinymce/plugins/media'在init数据源中添加media data() { return { mediaUploaded: false, //有没有上传完成 resVideo: '', //返回的视频url init: { .

推荐文章

热门文章

相关标签