【问题标题】:node.js 6.0.0 buffer to string equivalent in python3node.js 6.0.0 缓冲区到 python3 中等效的字符串
【发布时间】:2022-01-24 13:32:04
【问题描述】:

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

this libnode 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

我的实际控制台消息: 也许我应该使用不同于 latin-1 和 utf-8 的东西?

【问题讨论】:

    标签: javascript python node.js python-3.x applepay


    【解决方案1】:

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

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

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

    完美运行

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

    【讨论】:

      【解决方案2】:

      根本不要尝试decode。解码将字节串变成文本串,而散列不是文本串。

      kdf_v = bytes.fromhex('E6F8C08930597B47472620568D207A23E4FCEF4B3F0AA3DC26FF369C622C6E1D')
      

      为您提供一个 32 字节的 bytes 对象,它在功能上等同于 Node.js Buffer

      【讨论】:

        猜你喜欢
        • 2015-05-19
        • 2013-06-15
        • 1970-01-01
        • 2017-12-29
        • 2020-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多