8
我需要使用通過二進制補碼錶示法將帶符號的整數編碼爲十六進制。比如我想將帶符號的十進制轉換爲使用二進制補碼編碼的十六進制
e.g. -24375 to 0xffffa0c9.
到目前爲止,我一直在努力轉換上以下行:
parseInt(-24375).toString(2)
> "-101111100110111"
這符合什麼Wolfram Alpha的displays,但我不知道怎麼去的簽署24位int數字表示(ffffa0c9)。
我已經制定了如何採取無符號二進制數,並表示這是兩個互補:
~ parseInt("101111100110111", 2) + 1
> -23475
,但我不知道得到這個數字的二進制表示轉換爲十六進制。
任何想法?
感謝 - 我用從@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