为什么当我完成解码和编码时,我的字符串末尾有一个换行符?
Why is there a newline on the end of my string when I finish decoding and encoding it?
这是我的代码:
def hex_to_base64(hex_string):
clear = hex_string.decode("hex")
print(clear)
base64 = clear.encode("base64")
print(base64)
return base64
hexstring = "49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d"
result = hex_to_base64(hexstring)
# verify results
if result == 'SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t':
print("Yuuuup!!! %r" % result)
else:
print("Nope! %r" % result)
我的结果验证测试失败。它打印出:
Nope! 'SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t\n'
'\n'换行符是从哪里来的?我可以将其剥离以通过测试,但我觉得那是作弊。
Base64编码包括:
>>> 'a'.encode('base64')
'YQ==\n'
其他Base64编码方式也包括那个换行符;参见 base64.encode()
例如:
encode()
returns the encoded data plus a trailing newline character ('\n'
).
这个选择似乎是历史性的; MIME Base64 内容传输编码规定使用最大行长度并插入换行符以保持该长度,但 RFC 3548 声明实现不得。
Python 提供两种选择;你可以在这里使用base64.b64encode()
function:
>>> import base64
>>> base64.b64encode('a')
'YQ=='
如果您正在寻找一种方法来获取没有尾随换行符的编码字符串,base64.b46encode
函数可以做到这一点。区别如下:
In [19]: base64.encodestring('a')
Out[19]: 'YQ==\n'
In [20]: base64.b64encode('a')
Out[20]: 'YQ=='
这是我的代码:
def hex_to_base64(hex_string):
clear = hex_string.decode("hex")
print(clear)
base64 = clear.encode("base64")
print(base64)
return base64
hexstring = "49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d"
result = hex_to_base64(hexstring)
# verify results
if result == 'SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t':
print("Yuuuup!!! %r" % result)
else:
print("Nope! %r" % result)
我的结果验证测试失败。它打印出:
Nope! 'SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t\n'
'\n'换行符是从哪里来的?我可以将其剥离以通过测试,但我觉得那是作弊。
Base64编码包括:
>>> 'a'.encode('base64')
'YQ==\n'
其他Base64编码方式也包括那个换行符;参见 base64.encode()
例如:
encode()
returns the encoded data plus a trailing newline character ('\n'
).
这个选择似乎是历史性的; MIME Base64 内容传输编码规定使用最大行长度并插入换行符以保持该长度,但 RFC 3548 声明实现不得。
Python 提供两种选择;你可以在这里使用base64.b64encode()
function:
>>> import base64
>>> base64.b64encode('a')
'YQ=='
如果您正在寻找一种方法来获取没有尾随换行符的编码字符串,base64.b46encode
函数可以做到这一点。区别如下:
In [19]: base64.encodestring('a')
Out[19]: 'YQ==\n'
In [20]: base64.b64encode('a')
Out[20]: 'YQ=='