gpt4 book ai didi

python - 此转换的输出发生了什么,为什么不是我认为应该的那样?

转载 作者:行者123 更新时间:2023-11-28 19:20:55 25 4
gpt4 key购买 nike

我正在尝试用 Python 编写一个简短的程序,将字符串从十六进制转换为字节,然后从字节转换为 base64。我有一个十六进制的基本字符串,相当于 base64 中的字符串。该程序如下所示:

import codecs

basecode = "49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d"
DesiredResult = "SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t"
e = codecs.decode(basecode, 'hex')
print(e)
y = codecs.encode(e, 'base64')
print(y)
z = bytes.decode(y, 'utf-8')
print(z)
print(DesiredResult)

if y == DesiredResult:
print("Success!")

我从程序中得到的输出如下:

b"I'm killing your brain like a poisonous mushroom"
b'SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t\n'
SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t

SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t

我相信您可以想象,这令人沮丧,因为这意味着虽然我已经接近成功,但我实际上并没有完成我打算做的事情。

那么,我该如何修改这个程序以确保我的转换输出与变量 DesiredResult 完全相同?

我知道它与转换中出现的 \n 有关,但我不知道它是如何到达那里的,我也不知道如何摆脱它。

非常感谢任何和所有建议。

最佳答案

base64 codec总是在末尾添加一个 \n 字节。

Convert operand to MIME base64 (the result always includes a trailing '\n')

要去除最后一个 \n 字节,请使用 Python slicing operator像这样:

>>> y
'SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t\n'
>>> DesiredResult
'SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t'
>>> y[:-1]
'SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t'
>>> y[:-1] == DesiredResult
True

关于python - 此转换的输出发生了什么,为什么不是我认为应该的那样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25273637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com