为了账号安全,请及时绑定邮箱和手机立即绑定

是否有 C# Enumerable 的等效项用于在 NodeJs 中将字符串转换为字节数组?

是否有 C# Enumerable 的等效项用于在 NodeJs 中将字符串转换为字节数组?

C#
慕丝7291255 2022-07-23 18:06:09
我正在将十六进制字符串发送到函数并使用 c# 将其作为字节数组返回,但现在要求是在 NodeJs 中执行此操作。我对此进行了太多搜索,但非解决方案给了我相同的结果这是我的带有这个十六进制字符串的 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 中尝试了这段代码,但没有得到相同的结果    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的结果
查看完整描述

2 回答

?
慕的地10843

TA贡献1785条经验 获得超8个赞

此函数将在 Node.js 中将十六进制字符串转换为字节数组:


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"));


查看完整回答
反对 回复 2022-07-23
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

最好为此使用Buffer API:

Buffer.from('8001000501335688003300020002000200', 'hex')
// <Buffer 80 01 00 05 01 33 56 88 00 33 00 02 00 02 00 02 00>


查看完整回答
反对 回复 2022-07-23
  • 2 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信