#networking #bit-manipulation #iot
Вопрос:
Я написал код для того же —
var string = "0C001A0001000"; var buf = new ArrayBuffer(string.length*2); // 2 bytes for each char var hex = new Uint16Array(buf); for (var i =0, strLen=string.length; i < strLen; i ){ hex[i] = (string[i] << (4*i) amp; 0XFF) hex[i 1] = (string[i 1] amp; 0XFF); } console.log((hex));
но результат таков : Uint16Array [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0 ] вместо шестнадцатеричных цифр . Я новичок в этой области, пожалуйста, укажите правильный код для того же самого . Результирующие шестнадцатеричные цифры должны быть в форме маленького конца.
Комментарии:
1. Пожалуйста, узнайте, как правильно делать отступы в коде, это поможет вам позже.
Ответ №1:
Шестнадцатеричный формат-это в основном формат отображения (вы не «сохраняете» ints в виде шестнадцатеричного); приведенный ниже код получает ints и отображает их в шестнадцатеричном виде.
var string = "0123456789AB"; // len needs to be N * 4 (fixed to 12; was 13) var buf = new ArrayBuffer(string.length/2); // 4 chars for each 16bit # var hex = new Uint16Array(buf) for (var i=0, strLen=string.length; i < strLen; i =4){ hex[i/4] = 0 hex[i/4] = (parseInt(string[i 0],16) << (4*1)) hex[i/4] = (parseInt(string[i 1],16) << (4*0)) hex[i/4] = (parseInt(string[i 2],16) << (4*3)) hex[i/4] = (parseInt(string[i 3],16) << (4*2)) } for (var i=0, strLen=string.length; i < strLen/4; i ){ console.log("0x" hex[i].toString(16)) }
Комментарии:
1. Что делать, если пользователь введет строку с пробелами ? . плюс, если строка нечетная, тогда ?