binary - 二郎 - 校验和

标签 binary erlang checksum

早安

我正在尝试对以下函数执行校验和

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/

相关文章:

c - C中的二进制搜索实现

python - 如何计算多个十六进制的位数

ios - Xcode swift 从 json 下载二进制文件

http - Erlang:带有 Inets 的 HTTP 接受 header

erlang - Erlang 是面向对象的吗?

bash - 创建带有校验和验证的文件下载脚本

udp - 我的 UDP 校验和计算每次都会给出错误的结果

audio - 提取音频文件的二进制表示

performance - Erlang 性能 - 参数传递/内联

c++ - Qt C++ xor 用于校验和?