2011年3月8日火曜日

Erlang erlang:adler32_combine 2つのデータのチェックサム(checksum)

実行結果:


Erlang R14B01 (erts-5.8.2) [smp:2:2] [rq:2] [async-threads:0]

Eshell V5.8.2  (abort with ^G)
1> Data1 = <<"Erlang">>.
<<"Erlang">>
2> Y = erlang:adler32(Data1).
133431898
3> Data2 = <<"andre">>
3> .
<<"andre">>
4> Z = erlang:adler32(Y,Data2).
432538724
5>
5> X = erlang:adler32(Data1).
133431898
6> Y1 = erlang:adler32(Data2).
102171147
7> Z1 = erlang:adler32_combine(X,Y,iolist_size(Data2)).
463799475
8> Z2 = erlang:adler32_combine(X,Y1,iolist_size(Data2)).
432538724
9>

要は
erlang:adler32/2とerlang:adler32_combine/3は同じ。

4>と7>戻り値のところで同じはずの数字が違うので、何だ?って思ったけど、
erlang:adler32_combineの第2引数を「Y1」じゃなくて「Y」にしていたのが原因でした。

0 件のコメント:

コメントを投稿