字节、进制、字符串格式化及拼接

1.字节

字节(Byte)是计算机存储和处理数据的基本单位之一。一个字节可以存储8个二进制位(bit),每个二进制位可以表示0或1。

在计算机中,字节通常是以二进制形式存储和传输的。例如,一个8位的二进制数00110110就是一个字节。字节的二进制表示范围是从00000000到11111111,对应着十进制的0到255。

字节也可以表示为十六进制形式,每个字节可以用两个十六进制数字表示。例如,字节00110110用十六进制表示为0x36。

二进制(Binary):
二进制是一种基于2的数字系统,只使用0和1来表示数值。

八进制(Octal):
八进制是一种基于8的数字系统,使用0到7共八个数字来表示数值。

十进制(Decimal):
十进制是我们通常使用的数字系统,使用0到9共十个数字来表示数值。

十六进制(Hexadecimal):
十六进制是一种基于16的数字系统,使用0到9的十个数字和A-F(或a-f)共16个字符来表示数值。

2.不同的进制之间转换数值

**int(i, 16)**是一个将十六进制数表示转换为整数的方法。具体来说,它将一个十六进制表示的字符串i转换为相应的整数。

1).处理二进制数据:
假设你有一个十六进制的二进制编码字符串,比如0b1101,你想将它转换为整数。

binary_string = "0b1101"
decimal_number = int(binary_string, 2)  # 2表示二进制
print(decimal_number)  # 输出: 13

在这个例子中,int(binary_string, 2)将binary_string转换为整数13,因为0b1101在二进制中表示的数值是13。

2).编码处理:
在编码过程中,你可能会遇到需要将十六进制表示的字符转换为它们对应的ASCII字符。

hex_string = "41"
decimal_number = int(hex_string, 16)
print(chr(decimal_number))  # 输出: A

在这个例子中,int(hex_string, 16)将hex_string转换为整数65,因为41在十六进制中表示的数值是65,而65是ASCII码表中的字符’A’。

3).进制转换计算:
在进行各种计算时,你可能需要将数值从一种进制转换为另一种进制。例如,将十六进制数转换为十进制数。

hex_number = "1A"
decimal_number = int(hex_number, 16)
print(decimal_number)  # 输出: 26

在这个例子中,int(hex_number, 16)将hex_number转换为整数26,因为1A在十六进制中表示的数值是26。

3.bytes()用法

bytes()函数用于创建一个字节对象(bytes object)。字节对象是一种不可变的序列类型,包含一系列字节。每个字节是一个表示8位二进制数的整数,范围从0到255。

1).通过字节序列创建字节对象:
bytes(iterable):从可迭代对象iterable创建字节对象,例如列表或元组。
bytes(string, encoding):从字符串string和指定的编码encoding创建字节对象。
以下是使用bytes()函数的一些示例:

byte_string = bytes([10, 20, 30])
print(byte_string)  # 输出: b'\n\x14\x1e'

2).通过字符串和编码创建字节对象:

byte_string = bytes("Hello, World!", "utf-8")
print(byte_string)  # 输出: b'Hello, World!'

3). 从文件读取字节数据并创建字节对象:

with open("example.txt", "rb") as file:
    byte_string = bytes(file.read())
print(byte_string)  # 输出文件内容的字节表示

需要注意的是,字节对象是不可变的。如果需要对字节数据进行修改,可以创建一个新的字节对象进行操作。字节对象在处理二进制数据和与底层系统进行交互时非常有用,例如网络通信、图像处理等场景。

4.struct.unpack()用法

struct.unpack 是 Python 标准库中的一个函数,用于将二进制数据解析成 Python 中的数据类型。它通常与 struct.pack 一起使用,struct.pack 用于将 Python 数据类型打包成二进制数据。

import struct

# 定义一个二进制数据
binary_data = b'\x01\x02\x03\x04'

# 使用 struct.unpack 解析二进制数据
unpacked_data = struct.unpack('BBBB', binary_data)

print(unpacked_data)  # 输出: (1, 2, 3, 4)

在上面的例子中,‘BBBB’ 是格式字符串,它指定了如何解析二进制数据。每个字符代表一个数据类型,如下:

‘B’ 代表无符号字符 (unsigned char),范围是 0 到 255。
‘h’ 代表有符号短整数 (short),范围是 -32768 到 32767。
‘i’ 代表有符号整数 (int),范围是 -2147483648 到 2147483647。
等等。具体的格式字符可以根据你的需要选择,详情可以查阅 Python 官方文档。

5.字符串格式化{:03.2f}

{:03.2f} 是 Python 字符串格式化中的一种格式,用于格式化浮点数。

{}: 这是一个占位符,用于将后面的变量插入到字符串中。

:: 冒号后面用于指定格式化的方式。

03.2f: 这部分包含了格式化说明符,具体含义如下:

0: 表示在结果中填充前导零(如果需要的话)。
3: 表示最小字段宽度为 3,即最少占用 3 个字符的位置,如果当前数字不足 3 位,则在前面填充零。
.2: 表示保留小数点后 2 位。
f: 表示浮点数类型。
因此,{:03.2f} 表示将一个浮点数格式化为字符串,至少占用 3 个字符的位置,保留小数点后 2 位,并在前面填充零(如果需要的话)。

例如,如果浮点数是 12.3456,那么格式化后的结果将是 012.35,其中小数点后两位四舍五入,且使用前导零填充。

6.字符串拼接方法

1). 使用加号“+”进行拼接:

str1 = "hello"
str2 = "world"
result = str1 + " " + str2
print(result)  # 输出:hello world

2). 使用字符串的join()方法:

str_list = ["hello", "world"]
result = " ".join(str_list)
print(result)  # 输出:hello world

3). 使用格式化字符串:

str2 = "world"
result = "{} {}".format(str1, str2)
print(result)  # 输出:hello world
在这里插入代码片

4). 使用f字符串(Python 3.6及以上版本):

str1 = "hello"
str2 = "world"
result = f"{str1} {str2}"
print(result)  # 输出:hello world
  • 16
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值