将字节转换为整数?

2025-02-07 08:44:00
admin
原创
60
摘要:问题描述:我目前正在开发一个加密/解密程序,我需要能够将字节转换为整数。我知道:bytes([3]) = b'x03' 但我找不到如何做相反的事情。我做错了什么?解决方案 1:假设你至少使用 3.2 版本,则有一个内置功能:int.from_bytes(bytes,,byteorder,signed=Fals...

问题描述:

我目前正在开发一个加密/解密程序,我需要能够将字节转换为整数。我知道:

bytes([3]) = b'x03'

但我找不到如何做相反的事情。我做错了什么?


解决方案 1:

假设你至少使用 3.2 版本,则有一个内置功能:

int.from_bytesbytes,,byteordersigned=False*)

...

参数bytes必须是字节类对象或生成字节的可迭代对象。

byteorder参数确定用于表示整数的字节顺序。如果byteorder"big",则最高有效字节位于字节数组的开头。如果byteorder"little",则最高有效字节位于字节数组的末尾。要请求主机系统的本机字节顺序,请使用sys.byteorder作为字节顺序值。

signed参数表示是否使用二进制补码来表示整数。

## Examples:
int.from_bytes(b'x00x01', "big")                         # 1
int.from_bytes(b'x00x01', "little")                      # 256

int.from_bytes(b'x00x10', byteorder='little')            # 4096
int.from_bytes(b'xfcx00', byteorder='big', signed=True)  #-1024

解决方案 2:

字节列表是可下标的(至少在 Python 3.6 中)。这样,您可以单独检索每个字节的十进制值。

>>> intlist = [64, 4, 26, 163, 255]
>>> bytelist = bytes(intlist)       # b'@x04x1axa3xff'

>>> for b in bytelist:
...    print(b)                     # 64  4  26  163  255

>>> [b for b in bytelist]           # [64, 4, 26, 163, 255]

>>> bytelist[2]                     # 26 

解决方案 3:

list()可用于将字节转换为 int(适用于 Python 3.7):

list(b'x03x04x05')
[3, 4, 5]

解决方案 4:

int.from_bytes( bytes, byteorder, *, signed=False )

对我来说不起作用 我使用了该网站的功能,效果很好

https://coderwall.com/p/x6xtxq/convert-bytes-to-int-or-int-to-bytes-in-python

def bytes_to_int(bytes):
    result = 0
    for b in bytes:
        result = result * 256 + int(b)
    return result

def int_to_bytes(value, length):
    result = []
    for i in range(0, length):
        result.append(value >> (i * 8) & 0xff)
    result.reverse()
    return result

解决方案 5:

在处理缓冲数据时我发现这很有用:

int.from_bytes([buf[0],buf[1],buf[2],buf[3]], "big")

假设中的所有元素buf都是8位长。

解决方案 6:

将字节转换为位串

format(int.from_bytes(open('file','rb').read()),'b')

解决方案 7:

这是我在寻找现有解决方案时偶然发现的一个老问题。我提出了自己的解决方案,并想与大家分享,因为它允许您根据字节列表创建 32 位整数,并指定偏移量。

def bytes_to_int(bList, offset):
    r = 0
    for i in range(4):
        d = 32 - ((i + 1) * 8)
        r += bList[offset + i] << d
    return r

解决方案 8:

#convert bytes to int 
    def bytes_to_int(value):
        return int.from_bytes(bytearray(value), 'little')

    bytes_to_int(b'xa231')
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1572  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1355  
  信创产品在政府采购中的占比分析随着信息技术的飞速发展以及国家对信息安全重视程度的不断提高,信创产业应运而生并迅速崛起。信创,即信息技术应用创新,旨在实现信息技术领域的自主可控,减少对国外技术的依赖,保障国家信息安全。政府采购作为推动信创产业发展的重要力量,其对信创产品的采购占比情况备受关注。这不仅关系到信创产业的发展前...
信创和国产化的区别   0  
  信创,即信息技术应用创新产业,旨在实现信息技术领域的自主可控,摆脱对国外技术的依赖。近年来,国货国用信创发展势头迅猛,在诸多领域取得了显著成果。这一发展趋势对科技创新产生了深远的推动作用,不仅提升了我国在信息技术领域的自主创新能力,还为经济社会的数字化转型提供了坚实支撑。信创推动核心技术突破信创产业的发展促使企业和科研...
信创工作   0  
  信创技术,即信息技术应用创新产业,旨在实现信息技术领域的自主可控与安全可靠。近年来,信创技术发展迅猛,对中小企业产生了深远的影响,带来了诸多不可忽视的价值。在数字化转型的浪潮中,中小企业面临着激烈的市场竞争和复杂多变的环境,信创技术的出现为它们提供了新的发展机遇和支撑。信创技术对中小企业的影响技术架构变革信创技术促使中...
信创国产化   0  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用