node.js 6.0.0 缓冲区到 python3 中的等效字符串
node.js 6.0.0 buffer to string equivalent in python3
我正在将旧的 node.js 库转换为 python,但无法在 python.
中重现 Buffer.toString() 的行为
this lib 用于 node 6.0.0 环境
我确实看过 this node issue,但我不明白它是否与我的问题有关。
js函数:
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)
输出:
æøÀ0Y{GG& V z#äüïK?
£Ü&ÿ6b,n
python相当于:
kdf_v = memoryview(bytes.fromhex('E6F8C08930597B47472620568D207A23E4FCEF4B3F0AA3DC26FF369C622C6E1D')).tobytes().decode('latin-1')
print(kdf_v)
输出(堆栈显示不正确)
æøÀ‰0Y{GG& V z#äüïK?
£Ü&ÿ6œb,n
根本就不要尝试decode
。解码将字节串转换为文本字符串,而哈希不是文本字符串。
kdf_v = bytes.fromhex('E6F8C08930597B47472620568D207A23E4FCEF4B3F0AA3DC26FF369C622C6E1D')
给你一个 32 字节的 bytes
对象,它在功能上等同于 Node.js Buffer
.
这只是控制台字符编码错误
查看二进制数据本身时,python 版本与 js 版本相同,因此:
kdf_v = bytes.fromhex(merchant_id).decode('latin1')
完美运行
@AKX 我确实需要 str 格式的变量,因为我在串联中使用它并且它的结果在 sha256 摘要中
我正在将旧的 node.js 库转换为 python,但无法在 python.
中重现 Buffer.toString() 的行为this lib 用于 node 6.0.0 环境
我确实看过 this node issue,但我不明白它是否与我的问题有关。
js函数:
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)
输出:
æøÀ0Y{GG& V z#äüïK?
£Ü&ÿ6b,n
python相当于:
kdf_v = memoryview(bytes.fromhex('E6F8C08930597B47472620568D207A23E4FCEF4B3F0AA3DC26FF369C622C6E1D')).tobytes().decode('latin-1')
print(kdf_v)
输出(堆栈显示不正确)
æøÀ‰0Y{GG& V z#äüïK?
£Ü&ÿ6œb,n
根本就不要尝试decode
。解码将字节串转换为文本字符串,而哈希不是文本字符串。
kdf_v = bytes.fromhex('E6F8C08930597B47472620568D207A23E4FCEF4B3F0AA3DC26FF369C622C6E1D')
给你一个 32 字节的 bytes
对象,它在功能上等同于 Node.js Buffer
.
这只是控制台字符编码错误
查看二进制数据本身时,python 版本与 js 版本相同,因此:
kdf_v = bytes.fromhex(merchant_id).decode('latin1')
完美运行
@AKX 我确实需要 str 格式的变量,因为我在串联中使用它并且它的结果在 sha256 摘要中