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

我正在将十六进制字符串发送到函数并使用 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的结果


慕丝7291255
浏览 88回答 2
2回答

慕的地10843

此函数将在 Node.js 中将十六进制字符串转换为字节数组:function hexStringToByteArray(hexStr) {&nbsp; &nbsp; let a = [];&nbsp; &nbsp; for(let c = 0; c < hexStr.length; c += 2) {&nbsp; &nbsp; &nbsp; &nbsp; a.push(parseInt(hexStr.substr(c, 2), 16));&nbsp; &nbsp; }&nbsp; &nbsp; return a;}console.log("Result: ", hexStringToByteArray("8001000501335688003300020002000200"));

慕妹3146593

最好为此使用Buffer&nbsp;API:Buffer.from('8001000501335688003300020002000200',&nbsp;'hex') //&nbsp;<Buffer&nbsp;80&nbsp;01&nbsp;00&nbsp;05&nbsp;01&nbsp;33&nbsp;56&nbsp;88&nbsp;00&nbsp;33&nbsp;00&nbsp;02&nbsp;00&nbsp;02&nbsp;00&nbsp;02&nbsp;00>
打开App,查看更多内容
随时随地看视频慕课网APP