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 中是 0x5D
但 0x00
在 ascii 中等于 null
而不是 k
。您需要找到一种不同的方式从硬件发送数据。 � 这不会给你任何信息。 apps.timwhitlock.info/unicode/…【参考方案3】:
好的,我发现我的问题出在我用来接收数据的库中
【讨论】:
以上是关于js如何正确解析HEX / fffd的主要内容,如果未能解决你的问题,请参考以下文章