2011-10-27 8 views
-3

初心者の質問には申し訳ありません。私はC++の経験がありません。私は入力を与えられたハッシュ値を生成するC++のメソッドを持っています。出力はchar outCode[outlen]として格納されます。私は与えられたハッシュ値を生成し、出力はbyte[] outputとして格納されているJavaメソッドがあります。私はjavaにストリームとしてC++値を送信しています。同じハッシュを持っているかどうかを比較するにはどうすればよいですか?ありがとう、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

あなたがしていることを伝えるのは難しいです。
バイナリデータの配列を16進数で表示したいのですか?

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

実際に私はそれらに16進値を格納している。 C++出力値はchar outCode [outlen]として定義され、javaはバイト配列としてbyte []出力として格納されます。私は、16進数の出力がjavaとC++の両方で同じであることを確認したい。 forループを無視すると、printf( "out [0] =%c"、outCode [0])だけではできません。 System.out.println( "out [0] =" + output [0]);と比較してください。だから私は実際のprintfとSystem.outステートメントを探しています。これは、リンゴとオレンジをリンゴと比較することができます。 thanks –

+0

C++でバイナリの内容を16進数で表示したいのですか? –

0

あなたは、C/C++でこのようにいくつかのバイトを印刷することができます。

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