gpt4 book ai didi

erlang - 十六进制转 64 有符号十进制

转载 作者:行者123 更新时间:2023-12-02 04:38:22 25 4
gpt4 key购买 nike

我有十六进制数据,我必须转换为 64 有符号十进制数据..所以我认为有如下步骤。 1.十六进制转二进制, 我没有编写自己的代码转换,而是使用此链接http://necrobious.blogspot.com/2008/03/binary-to-hex-string-back-to-binary-in.html中给出的代码。

bin_to_hexstr(Bin) ->
lists:flatten([io_lib:format("~2.16.0B", [X]) ||
X <- binary_to_list(Bin)]).

hexstr_to_bin(S) ->
hexstr_to_bin(S, []).
hexstr_to_bin([], Acc) ->
list_to_binary(lists:reverse(Acc));
hexstr_to_bin([X,Y|T], Acc) ->
{ok, [V], []} = io_lib:fread("~16u", [X,Y]),
hexstr_to_bin(T, [V | Acc]).

2.二进制转十进制, 如何实现这部分?

或任何其他方式实现十六进制 -> 64 有符号十进制数据

提前致谢

最佳答案

要将整数转换为十六进制字符串,只需使用 erlang:integer_to_list(Int, 16)。 要转换回来,请使用 erlang:list_to_integer(List, 16)。 我相信这些函数的基数是 2 到 36。

如果您想在二进制文件与十六进制字符串之间相互转换,您可以使用列表推导式使其更整洁:

bin_to_hex(Bin) -> [ hd(erlang:integer_to_list(I, 16)) || << I:4 >> <= Bin ].
hex_to_bin(Str) -> << << (erlang:list_to_integer([H], 16)):4 >> || H <- Str >>.

要将整数转换为包含 64 位有符号整数的十六进制字符串,您现在可以执行以下操作:

Int = 1 bsl 48, HexStr = bin_to_hex(<<Int:64/signed-integer>>),
Bin = hex_to_bin(HexStr), <<RoundTrippedInt:64/signed-integer>> = Bin,
Int =:= RoundTrippedInt.

关于erlang - 十六进制转 64 有符号十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/965038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com