【问题标题】:node.js - more than 2 byte hex numbernode.js - 超过 2 个字节的十六进制数
【发布时间】:2018-02-22 08:32:21
【问题描述】:

我想打印到控制台中以十六进制表示的 4 字节数字,如下所示:

console.log('\x5050');

但显然它的行为类似于 2 字节,因为它输出

P50

P 是 0x50,然后它只是按原样打印出剩余的 50。如何让我的程序将其视为一个完整的 32 位数字,而不是 8 位?

谢谢!

【问题讨论】:

  • console.log('\u5050')? BTW '\x5050' 是字符串,不是数字。
  • 你可以在这里阅读 js 转义序列 MDN \xXX 编码 latin-1 字符

标签: node.js hex 32-bit


【解决方案1】:

首先,0x50502 字节 而不是 4。文字 \x50 表示一个字节,因为它需要两个十六进制数字来表示一个 8 位数字。其次,\x 文字只编码一个字节,所以你应该像console.log('\x50\x50') 一样使用它。

【讨论】:

    【解决方案2】:

    字符串中的'\xXX'符号用于将十六进制值转换为ASCII字符:

    console.log('\x61');  // a
    

    只是字符串中的一个字符。

    console.log('What\x27s up\x3F')  // What's up?
    

    如果是字符串表示,您可以使用 0xXX 表示法和 parseInt() 方法完成您想要的操作:

    console.log(parseInt('0x5050', 16))  // 20560
    console.log(parseInt('5050', 16))  // 20560
    console.log(0x5050)  // 20560
    

    【讨论】:

      猜你喜欢
      • 2016-12-18
      • 1970-01-01
      • 2015-08-08
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 1970-01-01
      • 2019-09-08
      相关资源
      最近更新 更多