[英]Convert hex value to list of boolean values
這是一個奇怪的問題,但是請在這里堅持。 給定一個十六進制值(從00-FF開始),我需要將其轉換為二進制,然后從那里將其轉換為對象,其鍵為每個位的“位置”,且值為布爾值。
那是一個尷尬的解釋。 這是一個例子:
給定'FF',我需要將其轉換為二進制文件( parseInt(<hex value>, 16).toString(2)
適用於該作業)。
現在FF已變成1111 1111
,我需要將其轉換為如下所示的對象:
{
"1": true,
"2": true,
"4": true,
"8": true,
"16":true,
"32":true,
"64": true,
"128": true
}
再舉一個例子,給定十六進制值“ A6”,它變為1010 0110
,它將變為:
{
"1": false,
"2": true,
"4": true,
"8": false,
"16":false,
"32":true,
"64": false,
"128": true
}
我唯一要做的就是從二進制->對象進行最終轉換。
我知道我可以通過一個簡單的循環來做到這一點,但是我想知道是否有任何酷的comp-sci方法來完成此任務。
謝謝!
您可以執行此操作而無需使用中間二進制字符串,但是如果您只是停留在最后一步,則可以執行以下操作:
var bin = parseInt('0xa6', 16).toString(2);
Array.from(bin).reduce(function(byte, bit, index) {
byte[1 << bin.length - index - 1] = bit === '1';
return byte;
}, {});
這是一個長班輪
const x = parseInt('A6', 16).toString(2).split('').reduceRight((last, bit, i, arr) => Object.assign(last, {[`${1 << (arr.length - i - 1)}`]: bit == 1}), {}) console.log(x)
假定您所處的環境支持計算鍵 (ES2015中可用)
這里是。
var x = {}, s = 1;
(0x10100110).toString(16).split('').reverse().map(a => {
x[s] = !!~~a;
s *= 2;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.