在 JavaScript 中,如何将十六进制值的字符串表示形式转换为其十六进制表示形式?
我有一个字符串值“FE”,从校验和例程返回。我需要它的十六进制表示形式“\xFE”。
我不能简单地这样做,因为它给了我一个错误:
var crc = "FE";
var hex = "\x" + crc;
这只是给了我一个新的四字符 ASCII 字符串:
var crc = "FE";
var hex = "0x" + "FE";
像这样:
var hex = parseInt("FF", 16);
我也遇到了同样的问题。我有一个字符串,比如说“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);
我还没有检查哪一个更有效,但是两种解决方案都会产生相同的结果 - 十六进制值的缓冲区
对于 string
\xFE
,转义反斜杠:var hex = '\\x'+'FE'
要将
'FE'
转换为 数字,请使用 +('0xFE')
要将
+('0xFE')
显示为十六进制,请使用 (224).toString(16)
或 '0x'+((254).toString(16))