Подтвердить что ты не робот

Как преобразовать шестнадцатеричную строку в байт и байт в шестнадцатеричную строку в Javascript?

Как вы конвертируете шестнадцатеричный код, представленный в строке, в байтовый и обратный в Javascript?

var conv = require('binstring');
var hexstring ='80';
var bytestring = conv(hexstring, {in:'hex', out:'utf8'});
var backtohexstring = conv(bytestring, {in:'utf8', out:'hex'}); // != '80'???

backtohexstring декодирует входящую строку данных в правильный hex (я также использовал utf8 против байта, потому что он "выглядел" как входящая строка при печати на консоль), поэтому я запутался...

Я также нашел эти две собственные функции javascript, декодер работает на моем входящем потоке, но я до сих пор не могу получить шестую кодировку...

function encode_utf8( s ) {
  return unescape( encodeURIComponent( s ) );
}
function decode_utf8( s ) {
  return decodeURIComponent( escape( s ) );
}
4b9b3361

Ответ 1

Здесь используется узловой подход node.js, использующий класс Buffer, предоставляемый узлом standard lib.

https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings

Чтобы получить значение байта (0-255):

Buffer.from('80', 'hex')[0];
// outputs 128

И чтобы вернуть обратно:

Buffer.from([128]).toString('hex');
// outputs '80'

Чтобы преобразовать в utf8:

Buffer.from('80', 'hex').toString('utf8');

Ответ 2

Вы можете использовать Number.prototype.toString и parseInt.

Ключ состоит в том, чтобы использовать параметры radix для выполнения преобразований для вас.

var bytestring = Number('0x' + hexstring).toString(10);    // '128'
parseInt(bytestring, 2).toString(16);  // '80'