2011-10-27 45 views
-3

对不起,新手问题。我在C++中没有任何经验。我有一个用C++生成散列值的方法。输出存储为char outCode[outlen]。我有一个java方法,在给定输入的情况下生成散列值,输出存储为byte[] output。我将C++值作为流发送给java。我怎么能比较检查他们有相同的散列?谢谢,C++和Java字节数组

+0

其实我不想把它发送一个流。我想printf C++值和System.out java值,并确定它们是否具有相同的散列值。谢谢。 –

+0

在Java中,您有用于比较字节数组相等性的Arrays.equals(byte [],byte [])。但是要以编程方式执行此操作,您必须以某种方式分享结果,例如写入文件并稍后阅读。如果您只想通过一目了然检查相等性,请按字符打印数组。 – zeller

+0

我读过这个论坛,我可以使用System.out.printf(“0x%02X”,output [0]);在java中打印字节数组。你知道C++的等价物吗?谢谢 –

回答

0

很难说你在做什么。
您听起来像是想以十六进制显示二进制数据的数组?

C++

for(int i=0; i<outlen; ++i) 
    std::cout << std::hex << std::setw(2) << outcode[i]; 
std::cout << std::dec << std::endl; 

我不知道该怎么办了Java。 http://www.exampledepot.com/egs/java.math/Bytes2Str.html看起来很有帮助。

+0

其实我有十六进制值存储在他们。 C++输出值被定义为char outCode [outlen],并且java以byte []输出形式存储在字节数组中。我想确保十六进制输出对于java和C++都是一样的。如果我们忽略for循环,我不能只做printf(“out [0] =%c”,outCode [0]);并与System.out.println(“out [0] =”+ output [0]);进行比较。所以我正在寻找实际的printf和System.out语句,这将允许我将苹果与苹果进行比较,而不是桔子。谢谢 –

+0

所以你想在C++中以十六进制显示二进制内容? –

0

可以在C/C++这样打印几个字节:

int i; 
for (i = 0; i < outlen; ++i) 
    printf("%02x", outCode[outlen]);