2015-05-12 2 views
1

Я хочу спросить, что я хочу преобразовать свои двоичные данные в шестнадцатеричный, прежде чем вставить это в свою таблицу.Преобразование двоичного кода в hex в node.js

var net = require ('net');

var server = net.createServer(function(socket){ 


     socket.on('data',function(data){ 
     var bindata= data.toString('binary'); 

     //filter(bindata); 

     //if no error convert to hex. 
      var hexdata = bindata.toString('hex'); 

     //insert hexdata here. 


}); 

server.listen(3030,'127.0.0.1', function() { 
    console.log("server is listenining"); 
}); 

проблема заключается в том, что двоичные данные будут вставлены.

Благодарим вас заблаговременно.

ответ

5
parseInt("10101001", 2).toString(16) 
// => "a9" 

EDIT: Я думаю, что неправильно понял вопрос. Ваш data начинается как Buffer, затем вы конвертируете его в строку, а затем хотите, чтобы он был шестнадцатеричным? Если да, просто сделайте data.toString('hex'). Если вы уже манипулируют bindata, а затем восстановить в буфер:

var bindata = data.toString('binary'); 
// do something with bindata 
var hexdata = new Buffer(bindata, 'ascii').toString('hex'); 
+0

Почему ascii? Потому что это то, что вы получите в своем исходном буфере данных, если кто-то отправляет содержимое, совместимое с приложением/x-октетом-потоком. Если они отправляют строки UTC, то я предполагаю, что вы не будете возиться с шестнадцатеричным в первую очередь. – Amadan

+0

Большое спасибо – jemz

+0

Могу ли я спросить, почему это происходит после того, как я превратился в файл изображения, изображение не было правильно преобразовано enventhough, я получаю данные полного двоичного изображения. На изображении есть полосы линий. – jemz

0

Попробуйте это:

ParseInt ("1111", 2) .ToString (16);

Второй параметр в parseInt - это радиус, представляющий значение «111» для двоичного кода, а toString (16) преобразует его в шестнадцатеричный.

+0

Это похоже на [существующий ответ] (http://stackoverflow.com/a/30183127/1072229). –

Смежные вопросы