2012-06-28 2 views
2

한 클래스에서 생성 된 코드가 다른 클래스에서 검증 된 코드와 동일한 지 확인해야합니다. 그러나 비틀기는 다른 클래스에서 사용되는 논리가 다릅니다. 그것처럼.개별 바이트를 바이트 배열과 비교하십시오.

클래스 A : = "0A2D"

문자열 (가정) 내가 진수로를 0A, 2D를 꺼내 변환, 문자열 방법을 사용 & 바이트로 저장 값. 최종 결과는 다음과 같습니다.

int a1 = (byte) Integer.parseInt (s, 16); 여기서 s = 0A
int a2 = (byte) Integer.parseInt (s, 16); 여기서 S = 2D

10 (1 바이트 메모리), (A2) (45) (1 바이트 메모리)

클래스 B 될 것이다 그래서 a1 : 나는 방법 getBytes를 사용하는데있어,이 클래스

(). 그러나 내가 그것을 사용할 때 나는 이상한 o/p가 [B @ ...를 말하는 것을 본다. ... 첫째로 나는 실제로 거기에서 일어나고있는 것에 관한 정보가 필요하다. 어떻게 인코딩 되나. 둘째 여기서 O/P는 A 등급의 IE를 O/P와 일치 바이트 배열되어야

바이트 [] B = {A1A2} (메모리 2 바이트) B = {1,045}

그래서에서 엔드 A는 각각 1 바이트를 갖는 2 개의 값을 가질 것이다. 그러나 B는 동일한 두 값을 가지지 만 메모리 크기는 2 바이트가 될 어레이를가집니다.

나는 내 질문에 분명히 희망한다. & didnt 혼란.

친절한 도움을 받으실 수 있습니다. 미리 감사드립니다.

답변

0

"[B @ ......"라는 출력을 나타내는 코드 줄은 무엇입니까? (나는 점들이 출력을 잘라내는 것을 의미한다고 가정합니다.)이 특정 출력은 어레이 요소가 아닌 참조을 인쇄하려고하는 것처럼 나타납니다. for 루프를 사용하여 개별 요소를 인쇄하거나 Array.toString()을 사용하여 배열의 String 표현을 가져와야합니다. 아마

0

귀하의 언어는 다소 불분명하지만 다음 당신이 원하는 것을 할 것입니다 생각 :

byte[] b = new byte[] { a1, a2 }; 

배열 이니셜 라이저는 언어의 매우 유용한 기능입니다.

0

방금 ​​인쇄하는 것이 잘못 인쇄 배열이 Arrays.toString를 사용할 때 (편곡)

당신이 무슨 뜻 바이트 [] B = {A1A2}를 말할 때 내가 가정 바이트 [] B = {A1, A2}

0

바이트 []의 내용을 인쇄하려면 먼저 문자열로 변환해야합니다.

여기에 읽을 수있는 문자열로 바이트 배열을 변환하는 유용한 방법입니다 :

public static String toHexString(byte[] data) 
{ 
    if (data == null) return ""; 

    char[] hexArray = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 
    char[] hexChars = new char[data.length * 2]; 
    int v; 

    for (int j = 0; j < data.length; j++) 
    { 
     v = data[j] & 0xFF; 
     hexChars[j*2] = hexArray[v/16]; 
     hexChars[j*2 + 1] = hexArray[v%16]; 
    } 

    return new String(hexChars); 
} 

은 거기에서 나머지를 해결 할 수 있어야한다.

관련 문제