Erlangを使用してバイナリファイルで4バイト(リトルエンディアン)を読みました。バイナリファイルから単精度浮動小数点数を読み取ってErlang floatに変換する方法は?
浮かぶようにバイナリに変換しようとしますが、私は下に遭遇したエラーを保った:それはフロートパターンに一致しているように見えるし、代わりにlist_to_integerを呼び出すまで終わらない
** exception error: bad argument
in function list_to_integer/1
called as list_to_integer([188,159,21,66])
。単精度浮動小数点を自然Erlang浮動小数点に変換するにはどうすればよいですか?以下
私のErlangの機能:
readfloat(S, StartPos) ->
io:format("Pos: ~w~n", [StartPos - 1]),
case file:pread(S, StartPos - 1, 4) of
eof ->
ok;
{ok, Data} ->
% io:format("Wut: ~w~n", Data),
N = binary_to_list(Data),
case string:to_float(N) of
{error,no_float} ->
list_to_integer(N);
{F,_Rest} ->
F
end
% have tried this section as well, error too
% N = binary_to_list(Data),
% try list_to_float(N)
% catch
% error:badarg ->
% list_to_integer(N)
% end
end.
完璧なソリューションoをまれどこで詳細なバイナリ数学を見ることができますありがとうございました。君は。 –