nodejs / express i dane binarne w POST

Próbuję wysłać dane binarne do ekspresowej aplikacji. Działa dobrze, o ile moje wartości są mniejsze niż 0x80. Jeśli pojedyncza wartość jest równa 0x80 lub większa, powoduje to zwiększenie całego bufora.

Express Handler:

binary = require('binary');

exports.api = function(req, res){
    var body = req.body.name;
    var buf = new Buffer(body,'binary');

    console.log('body',req.body);
    console.log('req body len', body.length);
    console.log('buf len', buf.length);

    var g = binary.parse(buf)
        .word16bu('a') // unsigned 16-bit big-endian value
        .word16bu('b').vars

    console.log('g.a', g.a);
    console.log('g.b', g.b);

  res.send("respond with a resource");
};

Klient Python (Content-Type: application / x-www-form-urlencoded):

import requests
from struct import pack
# send two unsigned shorts (16-bits each).
requests.post('http://localhost:3000/api', data={'name':pack('!HH',1,2)})

Ekspresowe wyjście, gdy dane = 1,2.Tego właśnie oczekuję.

body { name: '\u0000\u0001\u0000\u0002' }
req body len 4
buf len 4
g.a 1
g.b 2
POST /api 200 1ms - 23b

Wyraź wyjście, gdy dane = 1,0xFF. Warto zauważyć, że 9520 jest w rzeczywistości 0x25 0x30 na heksie, co odpowiada „% 0” w ASCII. Tak, wygląda na to, że analizuje ciąg „% 00% 01 ...”.Chciałbym wiedzieć, jak temu zapobiec !!!

body { name: '%00%01%00%FF' }
req body len 12
buf len 12
g.a 9520
g.b 12325
POST /api 200 2ms - 23b

questionAnswers(2)

yourAnswerToTheQuestion