問題タブ [adler32]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Adler32 非常に速く繰り返す
adler32 チェックサム アルゴリズムを使用して、データベース ID から数値を生成しています。したがって、データベースに行を挿入するときは、その行の ID を取得し、それを使用してチェックサムを作成します。私が直面している問題は、データベースに 207 回挿入しただけで繰り返しチェックサムを生成したことです。これは、私が予想していたよりもはるかに高速です。これが私のコードです:
私がしていること/方法に何か問題がありますか? 一意の文字列を作成するために別の方法を使用する必要がありますか? URL で db id を使用したくないため、これを行っています... db の構造を変更すると、世界中のすべてのリンクが壊れます。
ありがとう!
c - メッセージのAdler32+アドラーの合計はゼロになりますか(CRC32のように)
CRC-32には、メッセージの最後にCRCを追加すると、全体のCRCを計算してメッセージの検証を実行できるというこのすばらしい特性があり、チェックサムに合格すると、最終結果はゼロになります。
このプロパティは、CRC-32の兄弟であるAdler32にも当てはまると思われますか?
短い答えは「いいえ」のようですが、何かを見逃していないことを確認したかっただけです。
ここのサンプルメッセージhttp://en.wikipedia.org/wiki/Adler-32を使用して、zlib実装を使用して以下のテストプログラムを作成しました。
そして、これらは結果です:
hash - adler32 ハッシュの恐ろしい衝突
adler32() をハッシュ関数として使用する場合、まれに衝突が発生することが予想されます。
衝突の確率を正確に計算することはできますが、大まかに言えば、
これは 32 ビットのハッシュ関数である
ため、数千のアイテムのサンプル セットで多くの衝突が発生することはありません。
これはほとんど当てはまりません。
以下に例を示します: 真ん中に日付を含む文字列を考えてみましょう。
ここで、日付の形式は yyyy-mm-dd で、2012 年をループします。
この例では 91 回の衝突があります。
さらに悪いことに、3 つの日付が重なったケースが 7 つあります。
このように一般的に使用されるハッシュ関数のパフォーマンスが低いのはなぜでしょうか?
または、何か不足していますか?
上記の例の詳細な結果は次のとおりです。
c# - Objective-C と C# で異なる adler32 チェックサム
ファイルとそのファイルの Adler32 チェックサムを Web サービスに送信する目的の c でアプリを開発しています。
ファイルを Web サーバーに送信すると、チェックサムが失敗したとの回答が返されます。
これは、objective-c の合計をチェックするために使用するコードです。
これは C# Web サービスのコードです。
チェックサムの結果が異なる理由を知っている人はいますか?
テスト ファイル: http://we.tl/gjqSj43238
Adler32 C#: 701ea682 (1881056898)
Adler32 オブジェクト C: 70100C51 (1880099921)
ありがとう!
ios - 目的 c の adler32 チェックサム
ユーザーの位置情報を使用してサーバーにデータを送信するアプリに取り組んでいます。サーバーは、Java で記述されたチェックサム計算に基づいてこのデータを受け入れます。
Java で記述されたコードは次のとおりです。
これに相当する目的の c を記述する方法を見つけるために、ヘルプを探してみました。上記の関数は adler32 を使用していますが、それについての手がかりはありません。助けてください。
御時間ありがとうございます。
java - adler32 Java ビット単位および入力の
ここで adler32 のコードを見つけましたhttp://developer.classpath.org/doc/java/util/zip/Adler32-source.html
ただし、私の更新コードは次のようになります
リンク上のコードに反対する
0xff
as buf[i]
is already 8 bytes とのAND の必要性を理解していません。 int
as a
isに昇格されることは理解していますがint
、タイプの昇格は の値を変更すべきではありませんbyte
。なしでは機能しないため、詳細が不足している可能& 0xff
性があります。によって計算された値でテストしましたjava.util.zip.Adler32
答えてくれてありがとう、ただし、私のテストなど、負の数になる値に対してのみ問題になります
版画
javascript - JavaScript オブジェクトからチェックサムを作成するにはどうすればよいですか?
JavaScript オブジェクトからチェックサムを作成する必要があります。
残念ながら、JavaScript のオブジェクトの順序付けのために、これを実現する簡単な方法はないようです。たとえば、次のオブジェクトを取り上げます。
これらのオブジェクトはデータが等しいと考えており、チェックサムを同じにしたいと考えています。オブジェクト内のデータが同じである限り、オブジェクトの順序は気にしません。
悲しいかな、JSON.stringify
それらの両方は実際には等しくありません。オブジェクトのチェックサムを作成する唯一の方法はその文字列表現を使用することであり、JSON.stringify
-ed 表現が等しくないため、私のチェックサムは等しくなりません!
私が思いついた解決策の 1 つは、次のように、定義済みのスキーマに基づいてオブジェクトを再作成することです。
実行JSON.stringify(sortify(obj1,schema))==JSON.stringify(sortify(obj2,schema))
すると戻りtrue
ます...ただし、新しいオブジェクトを作成し、データをシャッフルするという代償が伴います。
JSON.stringify
私のもう 1 つの解決策は、このメソッドを、事前定義されたスキーマからキーを選択し、それらの値を文字列化して結合するメソッドに置き換えることです。関数は次のとおりです。
このメソッドが正しい JSON を返さないという事実を無視すると (これは、私がやろうとしていることの例としては十分に近いものです)、最初の方法よりも速度が大幅に改善されています (少なくとも私の Chrome OS ブラウザーでは、ここで自分で確認できます: http://jsperf.com/sort-then-json-stringify-vs-smarter-stringify )、そしてもちろん、2 つのオブジェクト文字列表現が等しくなります!
しかし、何かを見逃していたのではないかと思っていたのですが、a) JavaScript GC を異常なケースに追い込んだり、b) あまりにも多くの文字列連結を実行したりしなかった、このようなもののための組み込みメソッドがずっとあったのです。私はむしろそれらをしたくありません。