C语言编程,一个int一般就是4个byte,使用&符号获取int变量的地址,就可以得到各个byte。而python不太一样,C编程看到的全是内存和地址,python编程更抽象,也更简单,不让我们去看底层的内存和地址,仅仅是对各种对象的操作。

bytes转换成int

int对象中有一个class method,专门用来从bytes对象到int对象:

>>> int.from_bytes(b'\xF1\x02\x03\x04', 'big')

4043440900

>>> int.from_bytes(b'\xF1\x02\x03\x04', 'big', signed=True)

-251526396

signed参数表示这个bytes对应的是有符号的数,或者无符号的int。

python不是C,int对象不受4个字节长度的限制:

>>> int.from_bytes(b'\xFF\xFF\xFF\xFF', 'big')

4294967295

>>> int.from_bytes(b'\xFF\xFF\xFF\xFF\x01\x02\x03\x04', 'big')

18446744069431493380

big参数表示的是字节序,分大段(big),也是网络序,即高字节位于低地址,另一个是小端(little),即高字节在高地址,x86 CPU使用的就是小端字节序。文本代码中使用b开头的bytes对象表达式,都是big模式。

>>> int.from_bytes(b'\xF1\x02\x03\x04', 'big')

4043440900

>>> int.from_bytes(b'\xF1\x02\x03\x04', 'little')

67306225

int转换成bytes

int对象有一个成员函数 to_bytes,可以用来将自己转换成bytes对象。

>>> (123).to_bytes(4, 'big')

b'\x00\x00\x00{'

>>> (123).to_bytes(4, 'little')

b'{\x00\x00\x00'

to_bytes函数第1个参数表示得到的bytes对象的长度,第2个参数表示字节序。同样,这个转换函数也有signed参数。如果参数不对,会有OverflowError异常抛出:

>>> (168).to_bytes(1, 'big', signed=False)

b'\xa8'

>>> (168).to_bytes(2, 'big', signed=True)

b'\x00\xa8'

>>> (168).to_bytes(1, 'big', signed=True)

Traceback (most recent call last):

File "", line 1, in

OverflowError: int too big to convert

第1个参数length,其实可以用比较大的数,然后用前面的0x00来判断,这个int转换成bytes后,需要多少个字节:

>>> (123456789).to_bytes(10, 'big')

b'\x00\x00\x00\x00\x00\x00\x07[\xcd\x15'

python做int和bytes的转换,就简单介绍如上。

-- EOF --

python bytes转int_int与bytes的转换相关推荐

  1. python bytes转换为string_Python3 中 bytes 和 string 之间的互相转换

    Table of Contents Python3 最重要的新特性大概要算是对文本(text)和二进制数据(binary data)作了更为清晰的区分.文本总是 Unicode,由 str 类型表示. ...

  2. python字符串和字节串有什么区别_对于Python中的字节串bytes和字符串以及转义字符的新的认识...

    事情的起因是之前同学叫我帮他用Python修改一个压缩包的二进制内容用来做fuzz,根据他的要求,把压缩包test.rar以十六进制的方式打开,每次修改其中一个十六进制字符串并保存为一个新的rar用来 ...

  3. 8. python基础之基础数据类型--bytes

    1. bytes字节串类型介绍: 定义一个字节串:字面量:b=b"he1lo 你好" [默认编码格式ASCII]类型: b=bytes("字节内容",encod ...

  4. python中bytes_Python3中的bytes和str类型

    Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...

  5. 免费视频教程!零基础学Python系列(7) - 数据类型之bytes(上)

    本节我们开始讲python数据类型之bytes类型,我们分为上下两个章节. 你可以直接到这个页面观看本节视频:免费视频教程!零基础学Python系列(7) - 数据类型之bytes(上) 以下为对应的 ...

  6. python:二进制序列类型 --- bytes, bytearray

    python:二进制序列类型 --- bytes, bytearray bytes 对象 bytearray 对象 bytes 和 bytearray 操作 操作二进制数据的核心内置类型是 bytes ...

  7. python bytearray拼接_python数据类型 ——bytes 和 bytearray

    bytes和 bytearray bytes:可以看作是一组二进制数值(0-255) 的 str 序列 bytearray:可以看作是一组二进制数值(0-255) 的 list 序列 bytes类型 ...

  8. python3 socket 接收 bytes 长度 会变,Python解析Socket数据流异常bytes的问题(详细)...

    本篇文章给大家带来的内容是关于Python解析Socket数据流异常bytes的问题(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. python在通过socket发送数据时, ...

  9. python将bytes转为str_Python3中bytes类型转换为str类型

    Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...

最新文章

  1. linux下mysql授权_linux下mysql命令(用户授权、数据导入导出)
  2. php mysqli参数,PHP5 mysqli 绑定参数
  3. 解决https://localhost:1158/em 页面无法打开的问题
  4. CentOS 6下编译安装Nginx
  5. C语言的关键字 extern
  6. 【渝粤教育】广东开放大学 云计算技术与应用 形成性考核
  7. mysql5.7 hibenate5.1_5.7 Spring与Hibernate整合应用
  8. nuxt的asyncdata页面刷新params数据丢失_React navigation goBack方法返回刷新
  9. 20151209小问题
  10. 51nod 1833 状压dp加一点图论
  11. AI技术如何做工程?
  12. NOWCODER暑期多校第四场F:Beautiful Garden(签到题)题解
  13. python怎么放音乐_python怎么添加背景音乐
  14. 8,JESD204B协议介绍
  15. 游戏测试好还是软件测试好,浅学软件测试 软件测试和游戏测试哪个有前途?...
  16. WEB前端 -- onfocus=quot;this.blur()quot;
  17. 已知函数func的C语言代码框架,第三章习题-ddg
  18. POJ 1088滑雪(3种解法)
  19. 下载高清图片素材,就上这6个网站,免费还能商用
  20. Debian 命令行配置网络并切国内源

热门文章

  1. 9个 强化学习现实生活中的应用
  2. linux常用指令和shell脚本
  3. 从井字棋程序总结C语言初学的知识
  4. 扩招了!中科大软件学院今年【扩招149人】!
  5. 干货 | 中科院心理所考研复试经验分享
  6. android创建app快捷方式
  7. java 自动监测_《阿里巴巴 Java 开发规约》自动化检测插件安装及体验
  8. 从Matlab的 .fig 图窗文件中提取相关数据
  9. 大数据处理算法一:BitMap算法
  10. 给我一个小碗,还你一个奇迹——结构工程师教你吃垮必胜客(有图,附论文)