早安
我正在尝试对以下函数执行校验和
Data = [<<"9">>,"81",
<<1>>,
<<"52=">>,
[[50,48,49,48,49,48,50,54,45,49,53,":",52,53,":",52,52]],
<<1>>,
<<1>>,
[<<"9">>,<<"0">>,<<1>>],
[<<"5">>,<<"4">>,<<1>>]]
使用:
checksum(Data) -> checksum(Data, 0).
checksum([H | T], Acc) ->
if
is_binary(H) ->
I = binary_to_list(H);
true ->
I = H
end,
checksum(T, I + Acc);
checksum([], Acc) -> Acc.
它基本上需要将数据分解成离散的数字
理想情况下它看起来像 [56,45,34,111,233,...]
然后将它们全部加在一起。
无论我尝试什么,编译器都会给我错误。之前我已经解决了它很简单,但现在食物链的一个变化影响了它。
请帮忙,祝你好运!
最佳答案
试试下面的代码:
checksum(Data) -> checksum(iolist_to_binary(Data), 0).
checksum(<<I, T/binary>>, Acc) -> checksum(T, I + Acc);
checksum(<<>>, Acc) -> Acc.
关于binary - 二郎 - 校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4025450/