我正在尝试从HEX转换为ASCII并且我收到此消息。我想了解如何以正确的方式解释它。
0x2b6162630704fe17
使用npm模块hex2ascii,它返回:
"+abc\u0007\u0004þ\u0017"
如果我从online converter转换,则会返回:
+abcþ
有人可以帮我解释一下吗?我正在使用节点。
我做错了吗?
感谢帮助!
答案 0 :(得分:0)
你确定它的8位ASCII吗?
如果是,则每个2个十六进制字符代表给定的ASCII编号。
所以: 2b6162630704fe17
将数字转换为字符的引用 - asciitable.com
基于07,我想知道您的数据是真正的ascii还是不同的编码。
答案 1 :(得分:0)
如果你在控制台中查看字符串,你会注意到你发布的两个字符串实际上是相同的。
要点是,字符串包含不可打印的unicode字符,它们会被hex2ascii模块转义。
您正在使用的在线转换器会尝试显示这些字符。由于它们不可打印,您根本看不到它们。
让我们转换十六进制字符串
var conv = "2b6162630704fe17".match (/(..)/g).reduce ((a,c) => a + String.fromCharCode(parseInt (c,16)), "")
conv //"+abcþ"
它看起来就像转换器中的String!让我们将它与其他字符串进行比较
conv === "+abc\u0007\u0004þ\u0017" // true