Jump to content
  • 0

Преобразование двоичного числа в шестнадцатеричное с разрядностью 2


Ser8191
 Share

Question

Здравствуйте. Подскажите как реализовать перевод:

Ссылка на код jsfiddle.net

 

Есть некий "регистр"

var pin1 = [1,0,0,0,0,0,0,0];  HEX это 0x01 )
var pin2 = [0,1,0,0,0,0,0,0];  HEX это 0x02 )
var pin3 = [0,0,1,0,0,0,0,0];  HEX это 0x04 )
var pin4 = [0,0,0,1,0,0,0,0];  HEX это 0x08 )
var pin5 = [0,0,0,0,1,0,0,0];  HEX это 0x10 )
var pin6 = [0,0,0,0,0,1,0,0];  HEX это 0x20)
var pin7 = [0,0,0,0,0,0,1,0];  HEX это 0x40 )
var pin8 = [0,0,0,0,0,0,0,1];  HEX это 0x80 )

Мне нужно получить этот регистр в HEX

Так как байт передаётся со старшего бита, нужно собрать строку из чисел справа налево:

dvo=String(pin1[7])+String(pin1[6])+String(pin1[5])+String(pin1[4])+String(pin1[3])+String(pin1[2])+String(pin1[1])+String(pin1[0]);

Получаю: 00000001

Как мне эту строку 00000001 преобразовать в HEX

 

 

Edited by Ser8191
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

 проще не массив, а именно число или строку. если конкретно из массива, то переверните массив, через join()  собирайте в строку, а дальше как в моем примере( у вас двоичные числа в обратном порядке )

UPD: (даже не смотрел что вы там нагородили))) вы бы ещё элементы ядерной физики туда сунули =)))

http://jsfiddle.net/t4w728xL/

 

  • Like 1
Link to comment
Share on other sites

  • 0

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

развернуть массив просто  http://javascript.ru/Array/reverse

Link to comment
Share on other sites

  • 0

Если применить функцию reverse то она сохраняет изменения в массиве, а не в переменной, и получается неверное значение:

https://jsfiddle.net/Ser8191/8kpqof9L/18/

var bin = arr.join('-');
document.getElementById("massiv").innerText=bin;
var rebin = '\ u 2 0 2 E ' + bin;//редактор не дал вставить символы без пробела
//Unicode Character 'RIGHT-TO-LEFT OVERRIDE' (U+202E)
document.getElementById("revers").innerText=bin;
}

Сделал вот так.

Спасибо.

var bin = arr.join('');
document.getElementById("massiv").innerText=bin;
var rebin = '\ u 202E' + bin;
document.getElementById("revers").innerText=rebin;
var decimal = parseInt(rebin, 2); 
decimal='0x'+decimal.toString(16); 
document.getElementById("hex").innerText=decimal;

Хм, тогда перевод не работает

 

var rebin =bin.split("").reverse().join("");

Вот так работает

Edited by Ser8191
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy