boost::crc_32_type を使用して C++ コードで文字列の crc コードを生成し、後で (java.util.zip.CRC32) を使用して Java で再生成したいのですが、結果は同じではありません。誰でも助けることができますか?
1850 次
2 に答える
6
そう。結果は等しい。
import java.util.*;
import java.lang.*;
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
String s = new String("123456789");
java.util.zip.CRC32 crc32 = new java.util.zip.CRC32();
crc32.update(s.getBytes());
System.out.println(crc32.getValue());
}
}
3421780262
#include <boost/crc.hpp>
#include <string>
#include <iostream>
#include <algorithm>
int main()
{
const std::string str = "123456789";
boost::crc_32_type crc32;
crc32 = std::for_each(str.begin(), str.end(), crc32);
std::cout << crc32() << std::endl;
}
3421780262
http://liveworkspace.org/code/0a5c4f1eaa920bd0161f7d37fa809aa3
于 2012-07-11T13:31:43.790 に答える
1
結果が確実に同じになるようにするには、同じビットで同じ CRC アルゴリズムを使用する必要があります。独自の CRC アルゴリズムを Java と C++ の両方で実装することも、1 つの CRC ライブラリのアルゴリズムを別の言語で実装することもできます。
編集:ビットが同じである必要があることを強調したいだけです。C++ 文字列のエンコーディングや文字サイズが Java 文字列と異なる可能性は十分にあります。
于 2012-07-11T13:16:58.703 に答える