将字节转换为整数?

2025-02-07 08:44:00
admin
原创
59
摘要:问题描述:我目前正在开发一个加密/解密程序,我需要能够将字节转换为整数。我知道: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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用