python 中的 Base64 编码字节,javascript 中的解码不是 return 原始字节
Base64 encoding bytes in python, decoding in javascript doesn't return the original bytes
我在 python:
中使用 base64 编码的字节
import base64
base64.b64encode(b"\xac\xd1%=\xdd\xe7\x18\x8f\xbcDrz\xa3\x8a\xac\x8dT\x88\t\xcf7\no\xfb\xa2\x97CI\x85\xe4:\xf2/\xd8a\xb5\xd2\x82\xa8\xce\x02Df\xd0?\x06re>\xb0\x94];~\xff\x00cV\xb5\xe3\xe8\xd1\xa0n").decode("utf-8")
# "rNElPd3nGI+8RHJ6o4qsjVSICc83Cm/7opdDSYXkOvIv2GG10oKozgJEZtA/BnJlPrCUXTt+/wBjVrXj6NGgbg=="
但是当我试图将它解码回 javascript 中的字节时:
atob("rNElPd3nGI+8RHJ6o4qsjVSICc83Cm/7opdDSYXkOvIv2GG10oKozgJEZtA/BnJlPrCUXTt+/wBjVrXj6NGgbg==")
// "¬Ñ%=Ýç\x18\x8F¼Drz£\x8A¬\x8DT\x88\tÏ7\noû¢\x97CI\x85ä:ò/ØaµÒ\x82¨Î\x02DfÐ?\x06re>°\x94];~ÿ\x00cVµãèÑ n"
我没有得到原始字节。
我怎样才能用 javascript 解码它并将原始字节作为字符串?
atob
将尝试将字节解码为文本,而不是将字节编码为类似于 Python.
中的 b'...'
的内容
您问:How can I decode it with javascript and get the original bytes as a string?
但我相信,您应该只使用字节而不是将其转换为字符串。
所以我尝试了 my base-64 decoding tool。我认为它 returns 的字节数组满足您的要求(因为 ac
确实意味着 172
):[172, 209, 37, 61, 221, 231, 24, 143, 188, 68, 114, 122, 163, 138, 172, 141, 84, 136, 9, 207, 55, 10, 111, 251, 162, 151, 67, 73, 133, 228, 58, 242, 47, 216, 97, 181, 210, 130, 168, 206, 2, 68, 102, 208, 63, 6, 114, 101, 62, 176, 148, 93, 59, 126, 255, 0, 99, 86, 181, 227, 232, 209, 160, 110]
.
在工具中我使用包js-base64
对其进行了解码。不过是几年前开发的,不知道现在有没有更好的解决方案。
我在 python:
中使用 base64 编码的字节import base64
base64.b64encode(b"\xac\xd1%=\xdd\xe7\x18\x8f\xbcDrz\xa3\x8a\xac\x8dT\x88\t\xcf7\no\xfb\xa2\x97CI\x85\xe4:\xf2/\xd8a\xb5\xd2\x82\xa8\xce\x02Df\xd0?\x06re>\xb0\x94];~\xff\x00cV\xb5\xe3\xe8\xd1\xa0n").decode("utf-8")
# "rNElPd3nGI+8RHJ6o4qsjVSICc83Cm/7opdDSYXkOvIv2GG10oKozgJEZtA/BnJlPrCUXTt+/wBjVrXj6NGgbg=="
但是当我试图将它解码回 javascript 中的字节时:
atob("rNElPd3nGI+8RHJ6o4qsjVSICc83Cm/7opdDSYXkOvIv2GG10oKozgJEZtA/BnJlPrCUXTt+/wBjVrXj6NGgbg==")
// "¬Ñ%=Ýç\x18\x8F¼Drz£\x8A¬\x8DT\x88\tÏ7\noû¢\x97CI\x85ä:ò/ØaµÒ\x82¨Î\x02DfÐ?\x06re>°\x94];~ÿ\x00cVµãèÑ n"
我没有得到原始字节。 我怎样才能用 javascript 解码它并将原始字节作为字符串?
atob
将尝试将字节解码为文本,而不是将字节编码为类似于 Python.
b'...'
的内容
您问:How can I decode it with javascript and get the original bytes as a string?
但我相信,您应该只使用字节而不是将其转换为字符串。
所以我尝试了 my base-64 decoding tool。我认为它 returns 的字节数组满足您的要求(因为 ac
确实意味着 172
):[172, 209, 37, 61, 221, 231, 24, 143, 188, 68, 114, 122, 163, 138, 172, 141, 84, 136, 9, 207, 55, 10, 111, 251, 162, 151, 67, 73, 133, 228, 58, 242, 47, 216, 97, 181, 210, 130, 168, 206, 2, 68, 102, 208, 63, 6, 114, 101, 62, 176, 148, 93, 59, 126, 255, 0, 99, 86, 181, 227, 232, 209, 160, 110]
.
在工具中我使用包js-base64
对其进行了解码。不过是几年前开发的,不知道现在有没有更好的解决方案。