Python中hex与float互转

整数之间互转

  1. 十进制转2进制:

    bin(22) #0b10110
    
  2. 十进制转8进制:

    oct(22) #0o26
    
  3. 十进制转16进制:

    hex(22) #0x16
    
  4. 2进制转十进制:

    int('0b10110', 2) # 22
    
  5. 8进制转十进制:

    int('0o26', 8) # 22
    
  6. 16进制转十进制:

    int('0x16', 16) #22
    

整数与字符串互转

  1. 十进制字符串转整数

    int('10') # 10
    
  2. 16进制字符串转整数

    int('10', 16) # 16
    int('0x10', 16) # 16
    
  3. 十进制整数转字符串

    str(10) #'10'
    
  4. 16进制整数转字符串

    str(0x10) #'16'
    

字节码编解码

字节解码

解码为字符串:

# 解为16进制字符串
b'\x31'.hex() # '31'
b'\x31\x32'.hex() # '3132'

# 解为ASCII字符(字节以16进制ASCII值表示)
b'\x61'.decode('ascii') # 'a'
b'\x61\x62'.decode('ascii') # 'ab'
b'\x31\x32\x61\x62'.decode('ascii') # '12ab'

# 解为16进制字符串数组
[hex(x) for x in b'\x01\x0234'] # ['0x1', '0x2', '0x33', '0x34']

解码为整数:

import struct

# 解为十进制数组
[x for x in b'\x01\x0234'] # [1, 2, 51, 52]

# 解为short型整数元组
struct.unpack('<h', b'\x02\x00') # (2,)
struct.unpack('<hh', b'\x02\x00\x08\x00') # (2, 8)

# 解为long型整数元组
struct.unpack('<l', b' \x01\x00\x00\x00') # (1,)
struct.unpack('<ll', b'\x01\x00\x00\x00\x02\x00\x00\x00') # (1, 2)

字节编码

# ASCII字符编码为字节(结果以ASCII字符表示字节)
'1'.encode('ascii') # b'1'
'12ab'.encode('ascii') # b'12ab'
# ASCII值(16进制)编码为字节(结果以ASCII字符表示字节)
bytes().fromhex('31326162') # b'12ab';31是数字1的ASCII值(49)的16进制表示,后面同理
bytes(map(ord, '\x01\x02\x33\x34')) # b'\x01\x0234'

# 整数列表
bytes([1]) # b'\x01'
bytes([12,  3, 97, 98, 99]) # b'\x01\x02\x03abc'
bytes([12,  3, ord('4'), ord('5') , ord('6') ]) # b'\x01\x02\x03456'
bytes([0x01,0x02,0x33,0x34]) # b'\x01\x0234'

import struct

# short型整数
struct.pack('<H', 1) # b'\x01\x00'  (h or H大小写都可以)
struct.pack('<HH', 1,2) # b'\x01\x00\x02\x00'
# long型整数
struct.pack('<L', 1) #  b'\x01\x00\x00\x00'
struct.pack('<LL', 1,2)  #  b'\x01\x00\x00\x00\x02\x00\x00\x00'

字节拼接

字节拼接

struct转换其他类型

struct可以[字节转换float、uint等类型][https://www.jianshu.com/p/62a818fd8cd2]:

hex转float

import struct
a=[0x45,0xaf,0xb9,0xdd]
s=struct.unpack(">f",bytes(a))[0]  #5623.23291015625

b='45afb9dd'
s=struct.unpack('>f',bytes.fromhex(b))[0]  # 5623.23291015625
  • 其中struct.unpack返回的是一个元组

float转hex

import struct
s=5623.23291015625
struct.pack('>f' ,float(s)).hex()  #'45afb9dd'

格式化字符

struct和格式化字符

Python3之struct包

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值