比特、字节、进制之间的关系
每一个二进制位就是一个比特,即一个字节是八个二进制位
。
例如:
十六进制的60
转成对应的二进制:01100000
01100000每一位是一个bit,不能再拆分了
以下是问ai关于某进制数占用字节空间的问题:
问:一个十六进制数,占几个字节?
答:一个十六进制数本身并不直接占用固定的字节数,因为它仅仅是一个数的表示形式,类似于十进制或二进制数。十六进制数的占用空间(即字节数)取决于它所表示的数值大小以及它是如何被存储或传输的。
然而,在大多数编程和数据处理环境中,当我们谈论十六进制数时,我们通常是在处理固定大小的数据类型,如8位(1字节)、16位(2字节)、32位(4字节)或64位(8字节)的整数。在这些情况下,十六进制数(或其对应的二进制表示)将占用该数据类型指定的字节数。
例如:
- 如果一个十六进制数被存储在一个8位的
byte
(或unsigned char
)数据类型中,那么它就占用1个字节。- 如果它被存储在一个16位的
short
(或unsigned short
)数据类型中,那么它就占用2个字节。- 对于32位的
int
(或unsigned int
)和64位的long long
(或unsigned long long
),则分别占用4个字节和8个字节。需要注意的是,十六进制只是一种数的表示方法,它并不改变数值本身所占用的空间。无论一个数是用十进制、二进制还是十六进制表示,它在计算机中的存储和传输都是以其二进制形式进行的,并且所占用的空间取决于它被声明或定义时的数据类型。
linux查看python进程
ps aux | grep python
:这会查出所有python进程
kill -9 PID
:杀掉指定进程
十六进制串转字节串
hex_str = '68 0B 00 68 C9 08 08 00 10 00 02 60 00 01 00 45 C0 16'
# 首先,我们需要去除字符串中的空格(如果有的话),因为fromhex()不接受空格
hex_str_no_spaces = hex_str.replace(' ', '')
# 然后,使用bytes.fromhex()将十六进制字符串转换为字节串
byte_str = bytes.fromhex(hex_str_no_spaces)
print(byte_str) # 输出: b'h\x0b\x00h\xc9\x08\x08\x00\x10\x00\x02`\x00\x01\x00E\xc0\x16'
print(type(byte_str)) # 输出: <class 'bytes'>
字节串转十六进制串
bcd_str = ''
int_str = ''
recvdata = b'h\x0b\x00h\xc9\x08\x08\x00\x10\x00\x02`\x00\x01\x00E\xc0\x16'
for item in recvdata:
print(f'item:{item}, type:{type(item)}')
bcd_str += '%02X ' % item # 转换为十六进制并添加空格
int_str += ' ' + str(item) # 转换为十进制并添加空格,注意这会在字符串开头添加一个额外的空格
# 移除int_str开头的空格
if int_str:
int_str = int_str[1:]
print(f'bcd_str: {bcd_str.strip()}, type:{type(bcd_str)}') # 使用strip()去除末尾的空格
print(f'int_str: {int_str}, type:{type(int_str)}')
BCD码和进制:
一个十进制的BCD码,将其BCD码作为一个二进制数,计算这个二进制数的16进制,结果和这个十进制数一样。
标签:十六进制,字节,二进制,BCD,int,str,20240803,type,进制 From: https://www.cnblogs.com/marverdol/p/1834260545的bcd码是0100 0101,把01000101当成二进制,其16进制也是45
165的bcd码是0001 0110 0101,把0001 0110 0101当成二进制,其16进制位165