[转]python常用的十进制、16进制、字符串、字节串之间的转换
阅读目录(Content)
整数之间的进制转换:
- 10进制转16进制: hex(16) ==> 0x10
- 16进制转10进制: int('0x10', 16) ==> 16
类似的还有oct(), bin()
-------------------
字符串转整数:
- 10进制字符串: int('10') ==> 10
- 16进制字符串: int('10', 16) ==> 16
- 16进制字符串: int('0x10', 16) ==> 16
-------------------
字节串转整数:
- 转义为short型整数: struct.unpack('<hh', bytes(b'\x01\x00\x00\x00')) ==> (1, 0)
- 转义为long型整数: struct.unpack('<L', bytes(b'\x01\x00\x00\x00')) ==> (1,)
-------------------
整数转字节串:
- 转为两个字节: struct.pack('<HH', 1,2) ==> b'\x01\x00\x02\x00'
- 转为四个字节: struct.pack('<LL', 1,2) ==> b'\x01\x00\x00\x00\x02\x00\x00\x00'
-------------------
字符串转字节串:
- 字符串编码为字节码: '12abc'.encode('ascii') ==> b'12abc'
- 数字或字符数组: bytes([1,2, ord('1'),ord('2')]) ==> b'\x01\x0212'
- 16进制字符串: bytes().fromhex('010210') ==> b'\x01\x02\x10'
- 16进制字符串: bytes(map(ord, '\x01\x02\x31\x32')) ==> b'\x01\x0212'
- 16进制数组: bytes([0x01,0x02,0x31,0x32]) ==> b'\x01\x0212'
-------------------
字节串转字符串:
- 字节码解码为字符串: bytes(b'\x31\x32\x61\x62').decode('ascii') ==> 12ab
- 字节串转16进制表示,夹带ascii: str(bytes(b'\x01\x0212'))[2:-1] ==> \x01\x0212
- 字节串转16进制表示,固定两个字符表示: str(binascii.b2a_hex(b'\x01\x0212'))[2:-1] ==> 01023132
- 字节串转16进制数组: [hex(x) for x in bytes(b'\x01\x0212')] ==> ['0x1', '0x2', '0x31', '0x32']
===================
测试用的python源码

import binascii
import struct def example(express, result=None):
if result == None:
result = eval(express)
print(express, ' ==> ', result) if __name__ == '__main__': print('整数之间的进制转换:')
print("10进制转16进制", end=': ');example("hex(16)")
print("16进制转10进制", end=': ');example("int('0x10', 16)")
print("类似的还有oct(), bin()") print('\n-------------------\n') print('字符串转整数:')
print("10进制字符串", end=": ");example("int('10')")
print("16进制字符串", end=": ");example("int('10', 16)")
print("16进制字符串", end=": ");example("int('0x10', 16)") print('\n-------------------\n') print('字节串转整数:')
print("转义为short型整数", end=": ");example(r"struct.unpack('<hh', bytes(b'\x01\x00\x00\x00'))")
print("转义为long型整数", end=": ");example(r"struct.unpack('<L', bytes(b'\x01\x00\x00\x00'))") print('\n-------------------\n') print('整数转字节串:')
print("转为两个字节", end=": ");example("struct.pack('<HH', 1,2)")
print("转为四个字节", end=": ");example("struct.pack('<LL', 1,2)") print('\n-------------------\n') print('字符串转字节串:')
print('字符串编码为字节码', end=": ");example(r"'12abc'.encode('ascii')")
print('数字或字符数组', end=": ");example(r"bytes([1,2, ord('1'),ord('2')])")
print('16进制字符串', end=': ');example(r"bytes().fromhex('010210')")
print('16进制字符串', end=': ');example(r"bytes(map(ord, '\x01\x02\x31\x32'))")
print('16进制数组', end =': ');example(r'bytes([0x01,0x02,0x31,0x32])') print('\n-------------------\n') print('字节串转字符串:')
print('字节码解码为字符串', end=": ");example(r"bytes(b'\x31\x32\x61\x62').decode('ascii')")
print('字节串转16进制表示,夹带ascii', end=": ");example(r"str(bytes(b'\x01\x0212'))[2:-1]")
print('字节串转16进制表示,固定两个字符表示', end=": ");example(r"str(binascii.b2a_hex(b'\x01\x0212'))[2:-1]")
print('字节串转16进制数组', end=": ");example(r"[hex(x) for x in bytes(b'\x01\x0212')]") print('\n===================\n')

转自:https://blog.csdn.net/crylearner/article/details/38521685
[转]python常用的十进制、16进制、字符串、字节串之间的转换的更多相关文章
- python各进制、字节串间的转换
>>> i = 13 >>> bin(i) '0b1101' >>> oct(i) '0o15' >>> hex(i) '0xd ...
- python常用的十进制、16进制、字符串、字节串之间的转换
进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上,直接上例子 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 ...
- python经常使用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)
进行协议解析时.总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上.直接上样例 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 ...
- python IP地址转16进制
python IP地址转16进制 第一种方法: 通过socket.inet_aton实现 import socket from binascii import hexlify ary='192.168 ...
- python--常用的十进制、16进制、字符串、字节串之间的转换
进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 16进制转10进制 ...
- iOS 16进制字符串转换成int十进制
NSRange rangeErr; rangeErr.location = 6; rangeErr.length = 2; NSString *strings = [value substringWi ...
- Java中byte与16进制字符串的互换原理
我们都知道Java中的byte是由8个bit组成的,而16进制即16中状态,它是由4个bit来表示的,因为24=16.所以我们可以把一个byte转换成两个用16进制字符,即把高4位和低4位转换成相应的 ...
- Java中byte与16进制字符串的互相转换
* Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串. * @param s ...
- [转]Java中byte与16进制字符串的互相转换
Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符, ...
随机推荐
- O-超大型LED显示屏
Input 输入包含不超过100组数据.每组数据第一行为”START hh:mm:ss”,表示比赛开始时刻为hh:mm:ss.最后一行为”END hh:mm:ss”,即比赛结束时刻.二者之间至少会有一 ...
- Redis---Redis与Memcached
4.Redis与Memcached 两者都是非关系型内存键值,主要有以下不同: 数据类型 Memcached仅支持字符串类型,而Redis支持五种不同的数据类型,可以更灵活地解决问题. 数据持 ...
- 剑指offer-动态规划-贪心算法--剪绳子-python
题目描述 给你一根长度为n的绳子,请把绳子剪成m段(m.n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m].请问k[0]xk[1]x...xk[m]可能 ...
- a ^ b mod c 取模运算优化反思(老物)
这是一篇嘲讽我之前的自己采用笨重愚蠢思想去解决问题的日志. RSA 加密与解密涉及到 a ^ b mod c 的问题,如何计算这个值呢? 我会选择 pow(a, b) % c, 事实上在写RSA的时候 ...
- install python+twisted+mysqldb+django on mac
一. install python 1) check install or not 在mac终端输入命令:which python 即可查看python的路径 2)未安装时,手动下载安装包 地址:ht ...
- JavaScript是如何工作的:引擎,运行时间以及调用栈的概述
JavaScript是如何工作的:引擎,运行时以及调用栈的概述 原文:How JavaScript works: an overview of the engine, the runtime, and ...
- CentOS7.6下设置mysql服务开机启动
在centos7中所有对服务的管理都集中到了systemctl当中,所以服务的启动.关闭.重启.开机启动等等的操作都可以用systemctl. systemctl对服务的管理都是通过配置文件,配置文件 ...
- background的水平条纹和斜向条纹
水平条纹: <div id="div1"> </div> linear-gradient属性 #div1{ width: 100px; height: 10 ...
- JavaEE高级-Struts2学习笔记
Struts2是一个用来来发MVC应用的框架,它提供了Web应用程序开发过程中一些常见问题的解决方案: - 对来自用户的输入数据进行合法的验证 - 统一的布局 - 可扩展性. - 国际化和本地化 - ...
- HBase(二)——搭建Standalone HBase
HBase搭建--Standalone HBase 1.搭建方式说明 the setup of a single-node standalone HBase. A standalone instanc ...