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

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

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

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

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

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

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

【问题讨论】:

标签: javascript hex


【解决方案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】:

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

    【讨论】:

      猜你喜欢
      • 2019-09-05
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 2017-05-28
      • 2020-07-03
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多