繁体   English   中英

node.js 6.0.0 缓冲区到 python3 中的等效字符串

[英]node.js 6.0.0 buffer to string equivalent in python3

我正在将旧的 node.js 库转换为 python 并且无法重现 python 中 Buffer.toString() 的行为。

此库节点 6.0.0环境中使用

我确实看过这个节点问题,但我不明白它是否与我的问题有关。

js function:

const KDF_PARTY_V = Buffer.from('E6F8C08930597B47472620568D207A23E4FCEF4B3F0AA3DC26FF369C622C6E1D', 'hex').toString('binary') 
// The SHA-256 hash of your ID string literal; 32 bytes in size.
console.log(KDF_PARTY_V)

output:

æøÀ0Y{GG& V z#äüïK?
£Ü&ÿ6b,n

python 等效:

kdf_v = memoryview(bytes.fromhex('E6F8C08930597B47472620568D207A23E4FCEF4B3F0AA3DC26FF369C622C6E1D')).tobytes().decode('latin-1')
print(kdf_v)

output(堆栈显示不好)

æøÀ‰0Y{GG& V z#äüïK?
£Ü&ÿ6œb,n

我的实际控制台消息: 在此处输入图像描述 也许我会使用不同于 latin-1 和 utf-8 的东西?

只是不要尝试decode 解码将字节串变成文本串,而 hash 不是文本串。

kdf_v = bytes.fromhex('E6F8C08930597B47472620568D207A23E4FCEF4B3F0AA3DC26FF369C622C6E1D')

给你一个 32 字节的bytes object,它在功能上等同于 Node.js Buffer

这只是一个控制台字符编码错误

在查看二进制数据本身时,python 版本与 js 版本相同,因此:

kdf_v = bytes.fromhex(merchant_id).decode('latin1')

完美工作

@AKX 我确实需要 str 格式的变量,因为我在串联中使用它,并在 sha256 摘要中使用它的结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM