ドッグベルトのソリューションは、大きな整数で少し面倒かもしれません。シェルで
bits(HexBin) ->
bits(
binary:encode_unsigned(
binary_to_integer(HexBin, 16)
),
[]
).
bits(<<Bit:1, Rest/bitstring>>, Acc) ->
bits(Rest, [Bit|Acc]);
bits(<<>>, Acc) ->
list_to_tuple(lists:reverse(Acc)).
:
6> c(my).
{ok,my}
7> my:bits(<<"0421">>).
{0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1}
8> LongResult = my:bits(<<"FFFFFFFFFFFFFF0421">>).
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,...}
9> io:format("~p~n", [LongResult]).
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1}
ok
'binary_to_integer(<<"0421">>、16)'? – Dogbert
ありがとう@Dogbert、私はerlangに少し新しいです。私が値1057とその整数を得た時点で、それぞれのビットは何かを表しています。ビット0からビット15まで。私は今どのように各ビットを得ることができます。 – ManasP
私はそれを私の答えに加えました。 – Dogbert