节点js缓冲器翻转二进制位

我正在解决nodejs中的一些解码,并有一个缓冲区:

59 19 F2 92 8C 88 88 88 89 88 EB 89 88 88 A1 8A 88 88 88 88 89 88 A8 CD 88 88 88 DB 88 88 88 DC 88 88 88 A5 88 88 88 BD 88 88 88 B2 88 88 88 B8 88 88 88 B8 88 88 88 8A 88 89 89 8D 88 89 8D 8E 88 89 89 8F 88 89 89 80 88 8C 87 88 88 88 81 88 89 8B 82 88 8C 9C 88 88 88 85 88 8C 88 88 88 88 87 88 89 8A 99 88 89 88 9B 88 8C 8D 88 88 88 9C 88 8C 8D 88 88 88 9D 88 8C 8D 88 88 88 9E 88 8C A0 88 88 88 9F 88 94 DA 88 88 88 ED 88 88 88 FE 88 88 88 ED 88 88 88 FA 88 88 88 FB 88 88 88 ED 88 88 88 90 88 90 C4 88 88 88 E1 88 88 88 EF 88 88 88 E0 88 88 88 FC 88 88 88 FB 88 88 88 91 88 AC C4 88 88 88 ED 88 88 88 EE 88 88 88 FC 88 88 88 A8 88 88 88 DC 88 88 88 FD 88 88 88 FA 88 88 88 E6 88 88 88 92 88 A0 DA 88 88 88 E1 88 88 88 EF 88 88 88 E0 88 88 88 FC 88 88 88 A8 88 88 88 

要求doc说它被编码XOR字节对0x77然后取互补字节。

所以

 59 XOR 77 => 2E (00101110) => D1 (11010001) 19 XOR 77 => 6E (01101110) => 91 (10010001) 

什么是最好的方法在节点做到这一点,并与所需的字节缓冲区结束?

你可以试试这个:

 let buf = new Buffer([ 0x59, 0x19, 0xF2, 0x92 ]); // etc. let converted = new Buffer( Array.from(buf) .map(x => x ^ 0x77) .map(x => ~x) ); // output: <Buffer d1 91 7a 1a> 

这可能不是最快的方法(Array.from,而不是仅仅逐个遍历缓冲区,可能会更慢,我select了2个单独的地图,而不是1为了可读性),但至less应该让你开始。