js如何正确解析HEX / fffd

Posted

技术标签:

【中文标题】js如何正确解析HEX / fffd【英文标题】:js how to parse HEX properly / fffd 【发布时间】:2018-11-08 11:18:42 【问题描述】:

这里有问题。我从硬件接收数据作为十六进制数字。我用它把它们变成字符串(这是有意的):

arr.push(data.charCodeAt(0).toString(16))

效果很好。例如,我收到 0x00 并且此代码正确地将“0”字符串添加到数组中。

但是有一个问题。 JS 自动将这些代码理解为符号。当我尝试 0xAA 或 0x80 时,我收到 FFFD。我认为。这意味着在 utf-8 中没有这样的符号。

如何让 js 将我的数据理解为十六进制数字,而不是符号代码?

编辑:我发现我的问题在于我使用从硬件接收数据的库的错误方式。

【问题讨论】:

您没有显示任何符号,您正在显示字节的十六进制代码。如果你想要原始字符,请取下 .toString(16) How to convert decimal to hex in javascript?的可能重复 【参考方案1】:

只要convert the Hex number to decimal

yourNumber = parseInt(hexString, 16);

【讨论】:

【参考方案2】:

要将十六进制转换为十进制,您可以使用下一个函数:

parseInt(hexValue, 16)

希望这会有所帮助:)

data = '0XAA'
data1 = '0X80'
console.log( parseInt(data, 16))
console.log( parseInt(data1, 16))

【讨论】:

你能举一个你的数据的例子吗 以及该数据的类型 数据示例:��]�k���] typeof: string 我从硬件发送的内容:0xAA 0x81 0x5D 0x00 0xE8 0xBD 0x74 0x10 0x00 0x12 ��]�k���] 那是希望您在进行任何更改之前先登录吗? ] 在 ascii 中是 0x5D0x00 在 ascii 中等于 null 而不是 k。您需要找到一种不同的方式从硬件发送数据。 � 这不会给你任何信息。 apps.timwhitlock.info/unicode/…【参考方案3】:

好的,我发现我的问题出在我用来接收数据的库中

【讨论】:

以上是关于js如何正确解析HEX / fffd的主要内容,如果未能解决你的问题,请参考以下文章

最全解析如何正确学习JavaScript指南,必看!

如何让TYJ3 BE正确解析NameJS命名空间?

Intel HEX文件解析

linux下hex文件到bin文件的格式转化,bin文件转换为hex文件操作步骤解析

Relay.js 没有正确解析组合片段

腾讯地图api js 地址解析有的正确有的不正确,有没有碰到过的这个问题的大佬,怎么解决的??