python-3.x - 如何将表示 n 位的字符串转换为字节字符串?
问题描述
我对 Python 很陌生(以前从未用这种语言编写过代码),我需要将一个字节字符串传递给一个函数(如此处指定的 [1])。它接收一个代表二进制数的字符串,我想从中生成一个字节字符串。我已经尝试了无数的事情,但我真的被困在如何做到这一点,你能帮帮我吗?
我正在尝试将此值传递给处理 DES 的库,所以除了这样做之外,我别无选择。
[1] https://www.dlitz.net/software/pycrypto/api/current/Crypto.Cipher.DES-module.html#new
from Crypto.Cipher import DES
key = "1101101110001000010000000000000100101000010000011000110100010100"
param = key.tobytes() # <-- The function I need
cipher = DES.new(key, DES.MODE_ECB)
解决方案
您的密钥当前形式为二进制数。
您可以简单地从中获取字节(仍然作为字符串):
length = 8
input_l = [key[i:i+length] for i in range(0,len(key),length)]
然后将列表中的每一个转换为整数:
input_b = [int(b,base=2) for b in input_l]
然后简单地给出字节数组:
bytearray(input_b)
或者
bytes(input_b)
取决于您的用例。
将其转换为函数留给读者作为练习。
推荐阅读
- excel - 将用户表单输入值相乘和除以在 a 列中获得新的值范围时出错
- sql - 从另一列获取列
- reactjs - TypeError: _ is not a function while writing jest unit test case in react
- python - discord.py 使用自定义检查黑名单
- javascript - 如何解决 Array.sort 的问题无法分配给对象的只读属性“0”
- kotlin - recyclerview 片段中的上下文 - Kotlin
- c# - 覆盖 PageModel() 构造函数以设置默认属性(Razor 页面)
- objective-c - 从 ObjectiveC 类访问 Swift 类
- qt - 当我按下“隐藏”按钮时,QML 虚拟键盘未停用
- javascript - user.setRole 不是使用 sequlize postgres 的函数