我正在將十六進(jìn)制字符串發(fā)送到函數(shù)并使用 c# 將其作為字節(jié)數(shù)組返回,但現(xiàn)在要求是在 NodeJs 中執(zhí)行此操作。我對(duì)此進(jìn)行了太多搜索,但非解決方案給了我相同的結(jié)果這是我的帶有這個(gè)十六進(jìn)制字符串的 c# 代碼 `8001000501335688003300020002000200` public static byte[] StringToByteArray(string hex) { var byteArray = Enumerable.Range(0, hex.Length) .Where(x => x % 2 == 0) .Select(x =>Convert.ToByte(hex.Substring(x,2),16)) .ToArray(); return byteArray; }我在 NodeJs 中嘗試了這段代碼,但沒(méi)有得到相同的結(jié)果 function StringToByteArray(hex) { var rangebytes = range(0, hex.length).filter(x => x % 2 == 0) var filteredHex = rangebytes.match(x => Buffer.from(hex.substring(x, 2), "utf8")); return filteredHex; } function range(start, count) { return Array.apply(0, Array(count)) .map(function (element, index) { return index + start; }); } 這是 c# 代碼 http://prntscr.com/m7xnzg的結(jié)果
2 回答

慕的地10843
TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
此函數(shù)將在 Node.js 中將十六進(jìn)制字符串轉(zhuǎn)換為字節(jié)數(shù)組:
function hexStringToByteArray(hexStr) {
let a = [];
for(let c = 0; c < hexStr.length; c += 2) {
a.push(parseInt(hexStr.substr(c, 2), 16));
}
return a;
}
console.log("Result: ", hexStringToByteArray("8001000501335688003300020002000200"));
- 2 回答
- 0 關(guān)注
- 111 瀏覽
添加回答
舉報(bào)
0/150
提交
取消