【问题标题】:Hex to String & String to Hex conversion in nodejs节点js中的十六进制到字符串和字符串到十六进制转换
【发布时间】:2019-08-23 23:26:11
【问题描述】:

我需要使用 nodejs 8 将数据转换为字符串到十六进制,然后再从十六进制转换为字符串

我在从十六进制解码到字符串时遇到问题

转换代码string into hex

function stringToHex(str)
{
    const buf = Buffer.from(str, 'utf8');
    return buf.toString('hex');
}

转换代码hex into string

function hexToString(str)
{
    const buf = new Buffer(str, 'hex');
    return buf.toString('utf8');
}

我有字符串dailyfile.host

编码的输出:3162316637526b62784a5a37697a45796c656d465643747a4a505a6f59774641534c75714733544b4446553d

解码的输出:1b1f7RkbxJZ7izEylemFVCtzJPZoYwFASLuqG3TKDFU=

必需解码输出:dailyfile.host

【问题讨论】:

  • 仅供参考,这不是加密,这是编码
  • 感谢@PatrickRoberts 纠正我 :)
  • 您确定使用此代码吗? (并且说得对)我定义的功能和你一样。我将此代码称为 stringToHex('dailyfile.host'); // '6461696c7966696c652e686f7374' ` hexToString(stringToHex('dailyfile.host')); // 'dailyfile.host'`
  • 投票结束,因为minimal reproducible example 不满意。请提供一个完整且可验证的示例。这里没有代码可以重现从dailyfile.host3162316637526b62784a5a37697a45796c656d465643747a4a505a6f59774641534c75714733544b4446553d 的转换。

标签: node.js string encoding buffer


【解决方案1】:

您还需要使用Buffer.from() 进行解码。考虑写一个高阶函数来减少重复代码的数量:

const convert = (from, to) => str => Buffer.from(str, from).toString(to)
const utf8ToHex = convert('utf8', 'hex')
const hexToUtf8 = convert('hex', 'utf8')

hexToUtf8(utf8ToHex('dailyfile.host')) === 'dailyfile.host'

【讨论】:

  • 这仍然对我不起作用,我正在使用nodejs v8.11
  • @Hassaan “这不起作用”不是问题陈述。更具体地说明您遇到的问题。
  • 解码时问题依旧。编码字符串4d6a772b646e316c4e314867684c435431724a53674e593430306333675274474753506742672f622b4f6b3d,但解码字符串为Mjw+dn1lN1HghLCT1rJSgNY400c3gRtGGSPgBg/b+Ok=
  • 那是因为你的十六进制字符串那个输出字符串的十六进制编码。 utf8ToHex('dailyfile.host') 的输出是什么?应该是6461696c7966696c652e686f7374
  • 我已将您提供的答案作为沙盒进行了测​​试。它工作正常,但正如您在上面的评论中提到的那样,我的代码存在问题。我使用@skavinvarnan/cryptlib 模块进行加密,而在解码时我没有使用该模块。感谢男人以正确的方式指出我:)
猜你喜欢
  • 2012-01-24
  • 2019-07-27
  • 1970-01-01
  • 2020-11-07
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多