的字節,98749287說,有一些內置/ libray功能,無論是二郎神或酏劑,用於獲取以字節爲單位的大小?獲取大小在給定一個整數的任意整數
澄清用於表示二進制數字的最小字節數。
看似簡單,並書面使用「除以基地」的方法,然後對位進行計數的函數和,但搜索文檔的某些小時後還沒有發現什麼,似乎有什麼有用的。
的字節,98749287說,有一些內置/ libray功能,無論是二郎神或酏劑,用於獲取以字節爲單位的大小?獲取大小在給定一個整數的任意整數
澄清用於表示二進制數字的最小字節數。
看似簡單,並書面使用「除以基地」的方法,然後對位進行計數的函數和,但搜索文檔的某些小時後還沒有發現什麼,似乎有什麼有用的。
如果有一個無符號的整數,則可以使用下面的代碼片斷:
byte_size(binary:encode_unsigned(Integer))
實施例:
1> byte_size(binary:encode_unsigned(3)).
1
2> byte_size(binary:encode_unsigned(256)).
2
3> byte_size(binary:encode_unsigned(98749287)).
4
正是我在找的東西。學習Elixir的問題在於容易忘記Erlang文檔(或者更確切地說是「避免」)。現在可以拋出一些功能。 – Englishbob
是的,可能會很棘手。如果你是在OS X這隻幫助,但我通常使用破折號,同時搜索Erlang和藥劑文檔,如「整數」的東西,「二進制」和「大小」和這樣的。這是找到可能相關功能的好方法。 –
嘗試這個表達式:
Value = (... your input ...),
NumBytes = size(integer_to_binary(Value, 2) + 7) div 8.
參考:http://www.erlang.org/doc/man/erlang.html#integer_to_binary-2
這似乎工作。雖然留下了一個亂七八糟的小數,必須四捨五入。關於+7的想法是什麼? – Englishbob
+7是試圖收集。請將分區更改爲地板或整數部分,如C運算符'/'。 – Nayuki
使用'div 8'而不是'/ 8'來進行整數除法。 – legoscia
OOC , 你想做什麼? – zxq9
我必須使用基本編碼規則對某些整數進行編碼(將任意整數部分打包成7位系列)。 – Englishbob
有一個Erlang的ASN.1模塊,工作得很好。根據您的整體需求,這可能是一個更好的選擇(我經常使用它!)。 – zxq9