我想使用 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 算法,以使结果可靠地相同。您可以用 Java 和 C++ 实现自己的 CRC 算法,也可以用另一种语言实现一个 CRC 库的算法。
编辑:我只想强调你的位需要相同。您的 C++ 字符串很可能与您的 Java 字符串具有不同的编码和/或字符大小。
于 2012-07-11T13:16:58.703 回答