python常用进制转换

news/2024/7/19 11:24:40 标签: python, 开发语言, 爬虫

整数之间转换

python"># 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

字符串转整数

python"># 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()

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

    python">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()

python">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)

python">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()

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

#<class 'int'> 4665

struct.unpack()

python">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()

python">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()

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

python">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()

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

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

bytesarray.fromhex()

16进制字符串转bytesarray

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

for

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

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

bytes()

[]int转bytes

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

list()

bytesarray转[]int

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

binascii.b2a_hex()

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

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

binascii.a2b_hex()

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

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

python_228">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.niftyadmin.cn/n/11127.html

相关文章

Linux系统中使用汇编初始化外设方法

大家好&#xff0c;我是ST。 今天主要和大家聊一聊&#xff0c;如何使用汇编语言来实现芯片外设的初始化功能。 ​ 目录 第一步&#xff1a;硬件原理分析 第二&#xff1a;实验程序编写方法 第三&#xff1a;汇编代码具体实现 第四&#xff1a;编译与下载 第五&#xff…

String常用方法归纳 StringBuilder拓展——火速收藏!!!

文章目录关于String中的常用方法charAtcompareTo & compareToIgnoreCasecontainsequals & equalsIgnoreCaseindexOfisEmptylengthreplace & replaceFristsplitsubstringtoCharArraytoUpperCase & toLowerCasetrimformatvalueOf拓展&#xff1a;StringBuilderre…

shell命令以及运行原理

shell命令以及运行原理shell命令以及运行原理shell命令以及运行原理 Linux严格意义上来说说的是操作系统&#xff0c;我们把操作系统称之为“内核”&#xff08;kernel&#xff09;&#xff0c;但是我们用户是不会直接与kernel直接打交道的&#xff0c;我们是通过一个“外壳程…

Python编程 字典创建

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.字典 1.字典介绍 &#xff08;了解&#xff09; 2.字典创建&#xff0…

【后台技术】异步编程指北,问题和重点

导语&#xff1a;同步、异步&#xff0c;并发、并行、串行&#xff0c;这些名词在我们的开发中会经常遇到&#xff0c;这里对异步编程做一个详细的归纳总结&#xff0c;希望可以对这方面的开发有一些帮助。 内容大纲&#xff1a; 1、几个名词的概念 多任务的时候&#xff0c;…

大数据_数据中台_数据分层

目录 分层总览 ODS:操作数据层 DIM:维度数据层 DWD:明细数据层 DWS:汇总数据层 ADS:数据应用层 CDM:公共数据层 数据层级调用原则 分层总览 ODS:操作数据层 ODS(Operate Data Store&#xff09;,ODS层数据是数据仓库的第一层数据&#xff0c;是业务数据库的原始数据的复…

【无人机】基于拓展卡尔曼滤波时序四旋翼无人机状态跟踪附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

旅游定制服务|基于SSM实现旅游个性化定制网站平台

旅游定制订单管理 旅游订单管理 作者主页&#xff1a;编程千纸鹤 作者简介&#xff1a;Java、前端、Pythone开发多年&#xff0c;做过高程&#xff0c;项目经理&#xff0c;架构师 主要内容&#xff1a;Java项目开发、毕业设计开发、面试技术整理、最新技术分享 收藏点赞不迷路…