В Erlang обычно в программе хранятся такие числа как простые целые числа:
X = 1.
или эквивалентно, если вы хотите использовать шестнадцатеричный литерал:
X = 16#00000001.
И когда пришло время преобразовать число в двоичное представление, чтобы отправить его куда-нибудь еще, используйте битовый синтаксис:
<<X:32/big>>
Возвращает двоичный файл, содержащий четыре байта:
<<0,0,0,1>>
(Это 32-разрядное целое число с прямым порядком байтов. На самом деле по умолчанию используется значение с прямым порядком байтов, поэтому вы можете просто написать <<X:32>>
. <<X:64/little>>
будет 64-разрядным целым числом с прямым порядком байтов.)
С другой стороны, если вы просто хотите напечатать число в формате 0x00000001
, используйте io:format
с этим спецификатором формата:
io:format("0x~8.16.0b~n", [X]).
8
говорит ему использовать ширину поля8 символов, 16
указывает ему использовать основание 16 (т. Е. Шестнадцатеричное), а 0
- символ заполнения, используемый для заполнения числа до ширины поля.
Обратите внимание, чтоинкремент переменной работает по-разному в Erlang по сравнению с другими языками.Как только переменной присвоено значение, вы не можете его изменить, поэтому в итоге вы сделаете рекурсивный вызов, передав новое значение в качестве аргумента функции. Этот ответ имеет пример.