четверг, 25 августа 2011 г.

Bash 32bit unsigned dec to hex

Конвертируем десятичные числа в шестнадцатеричные в bash и видим, что числа больше 2 миллиардов становятся отрицательными. Тут нужно немного простой математической магии:
 VAL=3123456789  
 printf "%#x%x" $(( ${VAL} / 65536 )) $(( ${VAL} % 65536 ))