Javascript 中 Ruby 的 .pack("H*")].pack("m0") 的等效方法是什么?

what is the equivalent method for .pack("H*")].pack("m0") of Ruby in Javascript?

在 Ruby 中,我使用函数 .pack("H*")].pack("m0") 将十六进制消息字符串编码为 base64 字符串。

例如

msg_hex = 8308862831031591345F010101020663602A06E300000000EF934E0C5B29E50E000000000000000000000310000000004F04010000010000
msg_hex.pack("H*")].pack("m0") => gwiGKDEDFZE0XwEBAQIGY2AqBuMAAAAA75NODFsp5Q4AAAAAAAAAAAAAAxAAAAAATwQBAAABAAA=

在 Javascript 中,我正在寻找将消息转换为 64base 消息的等效方法。有些答案告诉使用Buffer.from(msg_hex).toString('base64'),但结果不同。

const msg_hex = 8308862831031591345F010101020663602A06E300000000EF934E0C5B29E50E000000000000000000000310000000004F04010000010000
Buffer.from(msg_hex).toString('base64') // => ODMwODg2MjgzMTAzMTU5MTM0NUYwMTAxMDEwMjA2NjM2MDJBMDZFMzAwMDAwMDAwRUY5MzRFMEM1QjI5RTUwRTAwMDAwMDAwMDAwMDAwMDAwMzEwMDAwMDAwMDA0RjA0MDAwMDAwMDEwMDAw

Javascript 中 Ruby 的 .pack("H*")].pack("m0") 的等效方法是什么?

您提供的东西就快到了。

您只是忘了告诉 Buffer.from 您提供的是什么,默认情况下,如果您发送一个字符串,它只会将其存储为一个字符串。但是你想要的是将源代码解码为十六进制,然后存储为二进制。

这样做 ->

Buffer.from(msg_hex, 'hex').toString('base64') 

IOW:你刚刚错过了第二个参数 hex..