nodejs 将十进制转换为十六进制(00-00)并反转?
nodejs convert decimal to hex(00-00) and reverse?
所以我想向服务发送一个十六进制值。问题是服务需要特定格式的此十六进制值,00-00,并且还反转。
例如,当我想告诉服务我想要标签“1000”时:
1000 十进制在十六进制中是 3E8
。简单。
现在服务需要格式 03-E8
.
此外,该服务从右到左读取,因此最终值为 E8-03
.
另一个例子,“3”将是 03-00
。
编辑:
我忘了说我不需要它作为字符串,而是作为 Uint8Array。所以我会用 new Uint8Array([232, 3])
创建最终结果。 (等于 E8-03
= 1000)
所以一般的问题是:如何从 1000 的输入中得到 [232,3] 或从 3 中得到 [3, 0]?
是否有已经可以进行此转换的内置方法或软件包?
我不知道任何工具或包。我会做这样的事情:
const a = 1000;
const a0 = a % 256;
const a1 = Math.floor(a / 256);
const arr = new Uint8Array([a0, a1]);
console.log(arr);
const arrStr = []
arr.forEach((elem) => {
const str = elem.toString(16).toUpperCase();
if (str.length === 2) {
arrStr.push(str);
} else {
arrStr.push('0' + str)
}
});
console.log(arrStr.reverse().join('-'));
输出:
Uint8Array(2) [ 232, 3 ]
03-E8
可能有更简单的方法,但这里有一个简单的解决方案。
编辑:如果您需要至少两对,您可以更改 padStart
的第一个参数。
function dec2hexUi8Arr (n) {
const hex = (n).toString(16);
const len = hex.length;
const padLen = len + (len % 2);
const hexPad = hex.padStart(Math.max(padLen, 4), '0');
const pairs = hexPad.match(/../g).reverse().map(p => parseInt(p, 16));
const ui8Arr = new Uint8Array(pairs);
return ui8Arr;
}
const vals = [
1000,
3,
65536
].map(dec2hexUi8Arr);
console.log (vals);
所以我想向服务发送一个十六进制值。问题是服务需要特定格式的此十六进制值,00-00,并且还反转。
例如,当我想告诉服务我想要标签“1000”时:
1000 十进制在十六进制中是 3E8
。简单。
现在服务需要格式 03-E8
.
此外,该服务从右到左读取,因此最终值为 E8-03
.
另一个例子,“3”将是 03-00
。
编辑:
我忘了说我不需要它作为字符串,而是作为 Uint8Array。所以我会用 new Uint8Array([232, 3])
创建最终结果。 (等于 E8-03
= 1000)
所以一般的问题是:如何从 1000 的输入中得到 [232,3] 或从 3 中得到 [3, 0]?
是否有已经可以进行此转换的内置方法或软件包?
我不知道任何工具或包。我会做这样的事情:
const a = 1000;
const a0 = a % 256;
const a1 = Math.floor(a / 256);
const arr = new Uint8Array([a0, a1]);
console.log(arr);
const arrStr = []
arr.forEach((elem) => {
const str = elem.toString(16).toUpperCase();
if (str.length === 2) {
arrStr.push(str);
} else {
arrStr.push('0' + str)
}
});
console.log(arrStr.reverse().join('-'));
输出:
Uint8Array(2) [ 232, 3 ]
03-E8
可能有更简单的方法,但这里有一个简单的解决方案。
编辑:如果您需要至少两对,您可以更改 padStart
的第一个参数。
function dec2hexUi8Arr (n) {
const hex = (n).toString(16);
const len = hex.length;
const padLen = len + (len % 2);
const hexPad = hex.padStart(Math.max(padLen, 4), '0');
const pairs = hexPad.match(/../g).reverse().map(p => parseInt(p, 16));
const ui8Arr = new Uint8Array(pairs);
return ui8Arr;
}
const vals = [
1000,
3,
65536
].map(dec2hexUi8Arr);
console.log (vals);