首页 > 解决方案 > 如何将表示 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)

标签: python-3.x

解决方案


您的密钥当前形式为二进制数。

您可以简单地从中获取字节(仍然作为字符串):

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)

取决于您的用例。


将其转换为函数留给读者作为练习。


推荐阅读