2011-10-27 3 views
-3

초보자를위한 질문에 사과드립니다. 나는 C++에 대한 경험이 없다. C++에서 입력이 주어진 해시 값을 생성하는 메서드가 있습니다. 출력은 char outCode[outlen]으로 저장됩니다. 나는 주어진 입력을 해시 값을 생성하고 출력은 byte[] output로 저장됩니다 자바 메서드가 있습니다. 나는 C++ 값을 java 로의 스트림으로 보내고있다. 동일한 해시가 있는지 확인하려면 어떻게 비교할 수 있습니까? 감사합니다,C++ 및 Java 바이트 배열

+0

는 사실 내가 스트림으로 보내 싶지 않다. 나는 printf에 C++ 값과 System.out에 자바 값을 넣고 같은 해시 값을 갖고 있는지를 알고 싶다. 감사. –

+0

자바에서는 바이트 배열이 동일한 지 비교하기 위해 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; 

나는 자바 작업을 수행하는 방법을 모르겠어요. http://www.exampledepot.com/egs/java.math/Bytes2Str.html가 도움이됩니다.

+0

실제로 16 진수 값이 그들에 저장되어 있습니다. C++의 출력 치는 char outCode [outlen]로서 정의되어 java는 byte 배열에 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]);