原文:https://blog.csdn.net/PYTandFA/article/details/78741339

https://python3-cookbook.readthedocs.io/zh_CN/latest/c03/p05_pack_unpack_large_int_from_bytes.html

首先我们来看两个__builtin__函数

num1 = int.from_bytes(b'12', byteorder = 'big')
num2 = int.from_bytes(b'12', byteorder = 'little')
print('(%s,'%'num1', num1, '),', '(%s,'%'num2', num2, ')')
result:(num1, 12594 ), (num2, 12849 )
byt1 = (1024).to_bytes(2, byteorder = 'big')
byt2 = (1024).to_bytes(10, byteorder = 'big')
byt3 = (-1024).to_bytes(10, byteorder= 'big')
lis1 = ['byt1', 'byt2', 'byt3', 'byt4']
lis2 = [byt1, byt2, byt3, byt4]
lis3 = zip(lis1, lis2)
dic = dict(lis3)
print(dic)
result:
byt1': b'\x04\x00'
byt2': b'\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00'
byt3': b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'
byt4': b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00'int.from_bytes()功能是将字节转化成int型数字'12'如果没有标明进制,看做ascii码值,'1' = 49 = 0011 0001, '2' = 50 = 0011 0010,如果byteorder = 'big', b'12' = 0010 0001 0010 0010 = 12594;如果byteorder = 'littlele', b'12' = 0011 0010 0011 0001 = 12849。第三个参数为signed表示有符号和无符号;(number).to_bytes()功能将整数转化成byte
(1024).to_bytes(10, byteorder = 'big'),一个int型,4字节。1024 = 0000 0000 0000 0000 0000 0100 0000 0000,由于给定的是10,所以凑齐10个字节,高位用6个
0000 0000占位,如果最后用16进制表示,1024 = b'\x00\x00\x00\x00\x00\x00\x00\x00x04\x00
在看一个例子:
byt3 = (-1024).to_bytes(10, byteorder= 'big', signed = 'true'),由于signed = 'true', -1024 = 1000 ...(11) 0000 0000 0000 0000 0000 0100 0000 0000,符号位为1,...省略了
11个0000,由于负数由补码表示,所以先求-1024的反码,即符号位不变,其他位0变1,1变0,得:1111 ...(11) 1111 1111 1111 1111 1111 1011 1111 1111,对反码 + 1,得到补码:
1111 ...(11) 1111 1111 1111 1111 1111 1100 0000 0000,用16进制表示:\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00
再举个例子:
num3 = int.from_bytes(b'\xf3\x25', byteorder = 'little')
f3 = 243(10进制)= 1111 0011,25 = 37(10进制)= 0010 0101,byteorder = 'little',字节的低位占主要作用, 得到:0010 0101 1111 0011,得到十进制:9715
num3 = int.from_bytes(b'\xf3\x25', byteorder = 'big', signed = 'true')
f3 = 243(10进制)= 1111 0011,25 = 37(10进制)= 0010 0101,byteorder = 'big',字节的高位占主要作用, 得到:1111 0011 0010 0101,signed = 'true',说明有符
号,而且高位为1,所以用补码:1000 1100 1101 1011 即:-3291

(转)python之from_bytes、to_bytes的更多相关文章

  1. 【Teradata SQL】十进制转换成二进制

    1.数值类型转换为二进制(TO_BYTE+FROM_BYTES) sel FROM_BYTES(TO_BYTE(),'base2');  2.字符串类型转换为二进制(TO_BYTES+FROM_BYT ...

  2. Python之scrapy框架之post传输数据错误:TypeError: to_bytes must receive a unicode, str or bytes object, got int

    错误名:TypeError: to_bytes must receive a unicode, str or bytes object, got int 错误翻译:类型错误:to_bytes必须接收u ...

  3. Python基础(二)

    本章内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典.set集合) for 循环 enumrate range和x ...

  4. python基础之数据类型(一)

    Python3 数字(Number) 定义:a=1 特性: 1.只能存放一个值 2.一经定义,不可更改 3.直接访问 分类:整型,长整型,布尔,浮点,复数 python2.*与python3.*关于整 ...

  5. Python基础2

    入门知识拾遗 一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 1==1: name = 'yuxiaozheng' print name 外层变量,可以被 ...

  6. Python全栈开发【基础二】

    Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...

  7. python之路3:

    class set(object): """ set() -> new empty set object set(iterable) -> new set o ...

  8. python基础-内置函数详解

    一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...

  9. python初识第二篇

    python 编码: 第一次编程有时候会遇到乱码的情况,就可以通过以下的情况来解决 在Windows中默认的就是gbk编码,如果在代码头两部定义utf-8,系统还会按照系统的方式来定义. python ...

随机推荐

  1. MySQL API函数

    MySQL提供了很多函数来对数据库进行操作,大致可以分为以下几类:        第一部分 控制类函数         mysql_init()初始化MySQL对象    mysql_options( ...

  2. mysql学习之路_sql

    查看数据库: Show databases; 查看指定部分数据库:模糊查询 Show databases like ‘patten’;--paatten是匹配模式 %:表示是匹配模式 _:表示匹配单个 ...

  3. HTMLDocument的变化

    H5扩展了一些新的功能 1.readyState 属性的两个属性值 loading 正在加载文档 complete 已经加载完文档 可以根据对象的状态触动触发函数 2.兼容模式 IE6开始区分渲染页面 ...

  4. js判断软键盘是否开启弹出

    移动端关于页面布局,如果底部有position:fixed的盒子,又有input,当软键盘弹出收起都会影响页面布局.这时候Android可以监听resize事件,代码如下,而ios没有相关事件. va ...

  5. HTTP 错误 500.XX - Internal Server Error 解决办法

    HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 详细错误信息 模块 IIS Web Core 通知 未知 处理程序 尚未 ...

  6. Kafka错误“Network is unreachable”和“larger than available brokers”

    确定Kafka安装和启动正确,ZooKeeper可以查到所有的Brokers,但执行: kafka-topics.sh --create --zookeeper localhost:2181 --re ...

  7. LRU ,LRUW,CKPT-Q

    原文出处:http://www.itpub.net/thread-1631537-1-1.html    http://www.linuxidc.com/Linux/2012-07/66767.htm ...

  8. Lombok自定义annotation扩展含Intellij插件

    Lombok简介 Lombok(https://projectlombok.org/)  提供了以注解的形式为java对象增加属性和方法,这使得原来冗长的java源文件变的简洁(不需要再使用ide去生 ...

  9. POJ3020 Antenna Placement

    Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9586   Accepted: 4736 ...

  10. QT5.4.0安装以及与VS2010整合安装---64bit操作系统解决方案

    QT5.4.0安装以及与VS2010整合安装---64bit操作系统解决方案 注意,目前QT官网不能下载,必须提供注册,然后才可以下载. 网上不同版本安装的细节有差异,特将我的安装相关操作贴出来,希望 ...