2011-05-26 133 views
8

我需要使用通過二進制補碼錶示法將帶符號的整數編碼爲十六進制。比如我想將帶符號的十進制轉換爲使用二進制補碼編碼的十六進制

e.g. -24375 to 0xffffa0c9. 

到目前爲止,我一直在努力轉換上以下行:

parseInt(-24375).toString(2) 
> "-101111100110111"  

這符合什麼Wolfram Alpha的displays,但我不知道怎麼去的簽署24位int數字表示(ffffa0c9)。

我已經制定了如何採取無符號二進制數,並表示這是兩個互補:

~ parseInt("101111100110111", 2) + 1 
> -23475 

,但我不知道得到這個數字的二進制表示轉換爲十六進制。

任何想法?

回答

3
+6

感謝 - 我用從@Tod答案從這個頁面:_(略有重新格式化)_ 'NUM = -24375; (num <0?(0xFFFFFFFF + num + 1):num).toString(16)' 結果可以[看到這裏](http://jsconsole.com/?num%20%3D%20-24375%圖3B%20%28num%20%3C%200%20%3F%20%280xFFFFFFFF%20%2B%20num%20%2B%201%29%20%3A%20num%29.toString%2816%29%3B) – diffa 2011-05-27 08:16:45