python常用进制转换

news2024/11/19 16:48:09

整数之间转换

# 1. 10 -> 16
hex(number)

# 2. 10 -> 2
bin(number)

# 3. 10 -> 8
oct(number)

# 4. x进制 -> 10
int(Union[str, bytes, bytearray],base=x)
------------------
print(int("0x16", base=16)) // 22

字符串转整数

# 10进制
val = int('10')
print(type(val), val)

# 16进制
val = int('0xa', 16)
print(type(val), val)
val = int('a', 16)
print(type(val), val)

# 2进制
val = int('0b1010', 2)
print(type(val), val)
val = int('1010', 2)
print(type(val), val)

----------------------------无意义------------------------------
# 3进制
val = int('101', 3)
print(type(val), val)
# 5进制
val = int('60', 5)
print(type(val), val)

bytes操作

  1. 什么是bytes? cgo简单易懂

    // byte is an alias for uint8 and is equivalent to uint8 in all ways. It is
    // used, by convention, to distinguish byte values from 8-bit unsigned
    // integer values.
    type byte = uint8
    
    // rune is an alias for int32 and is equivalent to int32 in all ways. It is
    // used, by convention, to distinguish character values from integer values.
    type rune = int32
    
  2. bytes 相比 str 而言更接近底层数据,也更接近存储的形式,它其实是一个字节的数组,类似于 C 语言中的 char [],每个字节是一个范围在 0-255 的数字。

int转bytes([]byte)

int.to_bytes()

def to_bytes(self,
             length: int,
             byteorder: str,
             *,
             signed: bool = ...) -> bytes
返回表示整数的字节数组。
  1. length:要使用的字节对象的长度。如果整数不能用给定的字节数表示,则会引发OverflowError。

    number = 256
    print(number.to_bytes(1, "little", signed=False))
    --------------------------------------------------------------
    >>> OverflowError: int too big to convert
    
    举例:
    number = 1024
    print(number.to_bytes(2, "little", signed=False)) // b'\x00\x04'
    hex(1024) // 0x0400
    
  2. byteorder:
    用于表示整数的字节顺序。如果字节顺序为“大端”,最高有效字节在最前面。如果字节顺序为“小端”,最低有效字节在最前面。要请求主机系统的本机字节顺序,请使用“sys.byteorder”作为字节顺序值。
    在这里插入图片描述

  3. signed:(uint,int的区别)
    确定是否使用二的补码来表示整数。如果有符号为False并且给定了负整数,则会引发OverflowError。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

bytes()

num_array = [57, 18, 0, 0]
val = bytes(num_array)
print(type(val), val)
# <class 'bytes'> b'9\x12\x00\x00'

print(bytes([0x12,0x12]))
print(bytes([0x13]))
# b'\x12\x12'
# b'\x13'

struct.pack(fmt,number)

num = 4665
val = struct.pack("<I", num)
print(type(val), val)

#<class 'bytes'> b'9\x12\x00\x00'
参数含义
>大端序
<小端序
Buint8类型
bint8类型
Huint16类型
hint16类型
Iuint32类型
iint32类型
Luint64类型
lint64类型
sascii码,s前带数字表示个数

bytes([]byte)转int

int.from_bytes()

bys = b'9\x12\x00\x00'
val = int.from_bytes(bys, byteorder='little', signed=False)
print(type(val), val)

#<class 'int'> 4665

struct.unpack()

bys = b'9\x12\x00\x00'
val = struct.unpack("<I", bys)
print(type(val), val)

#<class 'tuple'> (4665,)

string转bytes

// string is the set of all strings of 8-bit bytes, conventionally but not
// necessarily representing UTF-8-encoded text. 

//string是8位字节的所有字符串的集合,一般是这样但不是必然表示UTF-8编码文本。
type string string

encode()

res = "好好学习天天向上".encode("utf-8")
print(res, type(res))
----------------------------
b'\xe5\xa5\xbd\xe5\xa5\xbd\xe5\xad\xa6\xe4\xb9\xa0\xe5\xa4\xa9\xe5\xa4\xa9\xe5\x90\x91\xe4\xb8\x8a' <class 'bytes'>

bytes转string

decode()

特殊转换

bytes.fromhex()

十六进制字符串的二进制表示

res = bytes.fromhex("AF12")
print(type(res),res)
-----------------------------------
<class 'bytes'> b'\xaf\x12'

res = "B75285C190E907B8E41AC3BD1D8E8546002144AFEF7032B511C6"
data = binascii.unhexlify(res)
print(data, type(data))
# b'\xb7R\x85\xc1\x90\xe9\x07\xb8\xe4\x1a\xc3\xbd\x1d\x8e\x85F\x00!D\xaf\xefp2\xb5\x11\xc6' <class 'bytes'>

bytes.hex()

二进制的十六进制字符串表示。

b'\xe7\xbe\x8eqaq'.hex()
---------------------------------
b'\xe7\xbe\x8eqaq' => 'e7be8e716171'

bytesarray.fromhex()

16进制字符串转bytesarray

res = bytearray.fromhex("AF12")
print(res, type(res))
--------------------------------
bytearray(b'\xaf\x12') <class 'bytearray'>

for

bytes转16进制数组:0x是int类型

[hex(x) for x in b'\x01\x0212']  ==>  ['0x1', '0x2', '0x31', '0x32']

bytes()

[]int转bytes

bytes([57, 18, 0, 0])
---------------------------------
[57, 18, 0, 0] => b'9\x12\x00\x00'

list()

bytesarray转[]int

res = list(bytearray.fromhex("AF12"))
print(res, type(res))
------------------------------------
[175, 18] <class 'list'>

binascii.b2a_hex()

二进制数据的十六进制表示。

binascii.b2a_hex(b'\xe7\xbe\x8eqaq')
------------------------------------------
b'\xe7\xbe\x8eqaq' => b'e7be8e716171'

binascii.a2b_hex()

十六进制表示的二进制数据。

binascii.a2b_hex(b'e7be8e716171')
----------------------------------------
b'e7be8e716171' => b'\xe7\xbe\x8eqaq'

cgo和cpython对比

func main() {
	c:="好好学习天天向上"
	fmt.Println([]byte(c))
	fmt.Println([]rune(c))

	for _,val:=range []byte(c){
		fmt.Print(string(val),val," ")
	}
}
-----------------------------------------------

[229 165 189 229 165 189 229 173 166 228 185 160 229 164 169 229 164 169 229 144 145 228 184 138]
[22909 22909 23398 20064 22825 22825 21521 19978]
// 乱码
å229 ¥165 ½189 å229 ¥165 ½189 å229 ­173 ¦166 ä228 ¹185  160 å229 ¤164 ©169 å229 ¤164 ©169 å229 


c = "好好学习天天向上"
print(list(bytearray(c.encode("utf-8"))))
print([bytes(i, "utf-8").hex() for i in c])
--------------------------------------------------------------------
[229, 165, 189, 229, 165, 189, 229, 173, 166, 228, 185, 160, 229, 164, 169, 229, 164, 169, 229, 144, 145, 228, 184, 138]
['e5a5bd', 'e5a5bd', 'e5ada6', 'e4b9a0', 'e5a4a9', 'e5a4a9', 'e59091', 'e4b88a']

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29406.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SPP-学习笔记

Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition SPP提出的原因 1、现有的深度卷积神经网络(spp出现之前的)需要固定大小的输入图像(例如224224)。往往需要对图片裁剪或者resize&#xff0c;导致图片信息损失或者产生几何畸变。这样可能会损…

奥比中光亮相全球1024开发者节,与科大讯飞达成战略合作

作者 | 奥比中光 编辑 | 3D视觉开发者社区 11月17日-23日&#xff0c;第五届世界声博会暨2022科大讯飞全球1024开发者节在安徽合肥举办&#xff0c;奥比中光作为3D视觉感知头部企业参展&#xff0c;并与科大讯飞达成战略合作&#xff0c;共同赋能3D视觉行业应用开发。 本次参…

如何利用现代工具来管理多项目

多项目管理是如今现代企业管理时常常遇到的一个难题。不同于单项目管理&#xff0c;多个项目同时进行管理要复杂得很多。而单纯的手工管理方式已经满足不了多管理的复杂需求&#xff0c;项目负责人想要保障在预定的时间内&#xff0c;又快又好地完成整体项目&#xff0c;便需要…

工厂模式解耦-交由spring来完成

上面两个小节一直在谈论解耦&#xff0c;从入门的多例到升级的单例BeanFactory工厂类是我们自己手工写的。 BeanFactory主要做了3件事&#xff1a; 1.读取配置文件&#xff08;可以是properties或xml类型的文件&#xff0c;示例中用的是properties文件&#xff09; 2.获取类…

OC RSA加密解密

好久好久没有更新了。。。你们等的急不急。。这不&#xff0c;我就姗姗来迟了。。。本文重点讲解一下iOS系统下的RSA加密解密问题。 一般为了安全&#xff0c;私钥是不会给前端暴露出来 的&#xff0c;只会通过私钥生成一个公开的公钥提供给外部对数据进行加密。将加密后的数据…

残差网络ResNet解读

一、残差网络的定义 残差网络的核心是解决增加深度带来的退化问题&#xff0c;这样能够通过单纯增加网络深度来提高网络性能。 残差单元以短连接的形式&#xff0c;将单元的输入直接与单元输出加在一起&#xff0c;然后再进行激活。 Weight为抽取特征的网络层 Addition时xl和…

RK3568平台开发系列讲解(视频篇)摄像头采集视频的相关配置

🚀返回专栏总目录 文章目录 一、权限配置二、配置摄像头2.1、打开摄像头2.2、预览格式2.3、预览尺寸沉淀、分享、成长,让自己和他人都能有所收获!😄 📢Android 平台的摄像头的采集核心部分都是在 Native 层构建的,所以这就会涉及 JNI 层的一些转换操作。 一、权限配置…

Linux | 进程间通信 | 匿名管道 | 命名管道 | 模拟代码实现进程通信 |

文章目录进程通信的意义匿名管道通信原理管道的访问控制进程控制管道的特点命名管道进程通信的意义 之前聊进程时&#xff0c;讲过一个性质&#xff0c;即进程具有独立性&#xff0c;两个进程之间的交互频率是比较少的。就连父子进程也只是共享代码&#xff0c;修改父子进程中…

MODBUS通信系列之数据处理

MODBUS通信专栏有详细文章讲解,这里不再赘述,大家可以自行查看。链接如下: SMART S7-200PLC MODBUS通信_RXXW_Dor的博客-CSDN博客_smart200做modbus通讯MODBUS 是 OSI 模型第 7 层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。自…

化工机械基础期末复习题及答案

化工设备机械基础复习题 一 选择题 1、材料的刚度条件是指构件抵抗&#xff08; B &#xff09;的能力。 A&#xff0e;破坏 B&#xff0e;变形 C&#xff0e;稳定性 D&#xff0e;韧性 2、一梁截面上剪力左上右下&#xff0c;弯矩左顺右逆&#xff0c;描述正确的是&#xff08…

上班总结测试报告

出版社智能智造 测试报告 项目名称 出版社智能智造 测试版本 二期版本20221103 级别 用户使用 编写人 罗胜杰 日期 2022.11.15 目 录 1. 测试概述 1.1. 编写目的 1.2. 产品需求介绍 1.3. 参考资料 2. 测试计划执行情况 2.1. 测试范围及策略 2.2. 本…

[附源码]SSM计算机毕业设计基于的花店后台管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【Python百日进阶-WEB开发-冲進Flask】Day181 - Flask简单流程

文章目录一、day01项目环境和结构搭建1.1 新建虚拟环境1.2 安装Flask1.3 配置Python解释器二、后端知识要点2.1 Flask 文档2.2 实例化flask对象2.2.1 新建独立的配置文件settings.py2.2.2 实例化flask对象时加载配置文件2.3 基本路由2.3.1 常用路由及唯一性2.3.2 路由底层调用2…

中央空调系统运行原理以及相关设备介绍

目录前言一、中央空调系统工作原理1-1、工作原理1-2、中央空调系统构成二、室内空调三、制冷机组3-1、概述3-2、原理3-3、蒸发器3-4、冷凝器3-5、压缩机3-6、总结四、冷却塔总结前言 今天也是为了30岁开始养老而奋斗的一天。 一、中央空调系统工作原理 1-1、工作原理 中央空…

FFmpeg入门 - rtmp推流

FFmpeg入门 - 视频播放_音视频开发老马的博客-CSDN博客介绍了怎样用ffmpeg去播放视频. 里面用于打开视频流的avformat_open_input函数除了打开本地视频之外,实际上也能打开rtmp协议的远程视频,实现拉流: ./demo -p 本地视频路径 ​ ./demo -p rtmp://服务器ip/视频流路径 这篇…

JVM垃圾回收总结

常见面试题 如何判断对象是否死亡 简单介绍一下强引用、软引用、弱引用、虚引用 如何判断常量是一个废弃常量 如何判断类是一个无用类 垃圾收集有哪些算法、各自的特点&#xff1f; 常见的垃圾回收器有哪些&#xff1f; 介绍一下CMS&#xff0c;G1收集器&#xff1f; minor gc和…

[附源码]计算机毕业设计JAVA课后作业提交系统关键技术研究与系统实现

[附源码]计算机毕业设计JAVA课后作业提交系统关键技术研究与系统实现 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&am…

[附源码]计算机毕业设计JAVA课堂点名系统

[附源码]计算机毕业设计JAVA课堂点名系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

【2】Anaconda基本命令以及相关工具:jupyter、numpy、Matplotilb

上一篇请移步【1】Anaconda基本命令以及相关工具&#xff1a;jupyter、numpy、Matplotilb_水w的博客-CSDN博客 目录 3 Numpy数组基础索引&#xff1a;索引和切片 ◼ 基础索引 4 Numpy非常重要的数组合并与拆分操作 ◼ 数组的合并-concatenate、vstack、hstack numpy.vstac…

生产制造管理:供应商管理系统

随着经济全球化和信息技术的快速推进发展&#xff0c;传统的管理模式早已不再适应现代市场竞争与生产制造的需要&#xff0c;以顾客需求为中心的供应链管理显得更为重要。供应链是围绕核心企业&#xff0c;通过对信息流、物流、资金流等关键部分的控制连成一个整体的功能网链结…