2011-10-27 42 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]);