将十六进制值的字符串表示形式转换为十六进制

问题描述 投票:0回答:3

在 JavaScript 中,如何将十六进制值的字符串表示形式转换为其十六进制表示形式?

我有一个字符串值“FE”,从校验和例程返回。我需要它的十六进制表示形式“\xFE”。

我不能简单地这样做,因为它给了我一个错误:

var crc = "FE";
var hex = "\x" + crc;

这只是给了我一个新的四字符 ASCII 字符串:

var crc = "FE";
var hex = "0x" + "FE";
javascript string hex
3个回答
3
投票

像这样:

var hex = parseInt("FF", 16);

0
投票

我也遇到了同样的问题。我有一个字符串,比如说“CA030101CF”,我想将其转换为十六进制值,例如 0xCA 0x03 0x01 0x01 0xCF。需要明确的是,不是一个看起来像十六进制值的字符串。这意味着 0xCA,而不是“0xCA”等等。

最后,对我有用的解决方案是使用 Node.js Buffer,结合使用两个字符分隔字符串并添加“0x”前缀的函数。

这里有两种方法。

// Solution 1 - direct string to buffer conversion
const hexToString = (hex) => {
  let ar = [];
  for (let c = 0; c < hex.length; c += 2) {
    ar.push('0x' + hex.substr(c, 2));
  }
  return ar;
};

let s = "CA030101CF";
let buf = Buffer.from(hexToString(s));
console.log(buf);
// Solution 2 - string to buffer conversion
const hexToInt = (hex) => {
  let ar = [];
  for (let c = 0; c < hex.length; c += 2) {
    ar.push(parseInt('0x' + hex.substr(c, 2), 16));
  }

  return ar;
};

let s = "CA030101CF";
let buf = Buffer.from(hexToInt(s));
console.log(buf);

我还没有检查哪一个更有效,但是两种解决方案都会产生相同的结果 - 十六进制值的缓冲区


-1
投票

对于 string

\xFE
,转义反斜杠:
var hex = '\\x'+'FE'

要将

'FE'
转换为 数字,请使用
+('0xFE')

要将

+('0xFE')
显示为十六进制,请使用
(224).toString(16)
'0x'+((254).toString(16))

© www.soinside.com 2019 - 2024. All rights reserved.