2013-05-18 1 views
-1

나는 몇 가지 중요한 질문이있어 난 내 텍스트 뷰에에서 입력 한 나는 안녕 []에 저장된 16 진수 값을 보낼 필요가진수 값의 텍스트 뷰 입력 바이트 []

마녀를 내 안드로이드 전화 응용 프로그램.

예를 들어 0x1020을 입력하고 보내기 버튼을 누르면 i는 바이트 [] = {0x1020}을 원합니다.

toString 함수 (5 행)는 들어오는 원시 바이트를 다른 값으로 변환합니다. 그것은 처음 2 값의이 0X 것을 imortant의

 CharSequence values= view.getText(); 

및이 후 데이터의 2 또는 4 바이트 (16 진수 프레젠테이션)이 있습니다 : 법적 교체 될 것입니다.

나를 도울 시간을내어 주셔서 감사합니다.

답변

-1
  • 확인 문자열은 문자열
  • 사용 Integer.parseInt(message, 16)에서 처음 두 문자를 제거 message.startsWith("0x")
  • 를 사용하여 "0x"로 시작하는지 여부 : 16이 문자열에서 16 진수를 구문 분석을 시도합니다 의미
  • 결과를 byte[]에 저장하십시오. 1 바이트는 127 자까지만 저장할 수 있습니다.

이 정보가 도움이되기를 바랍니다.

편집 : this question에 대한 대답은 결과를 바이트 배열에 저장하는 데 도움이 될 수 있습니다.

+0

문자열이 반드시 32 비트 값 (해시 또는 암호화 된 값의 입력 인 경우)을 사용하여 표시 할 수 있다는 표시가 없습니다. 또한 4 단계의 "결과 저장 ..."int는 기본적으로 바이트 []에 저장되지 않습니다. [ –

+0

True Christian Bongiorno] 1234 입력시 작동하지 않았습니다. 내가 가치 4660있어 : ( –

+0

나는 그것이 바이트 배열에 기본적으로 저장할 수 있다는 것을 결코 암시하지 않았다. 나는 OP 문제를 해결하는 방법을 시작하는 방법에 대한 지침을 제공했습니다. @A.student, 4660은 숫자 0x1234의 표현입니다. 십진수 체계. 만약 4660을 파싱했다면, 그것이 성공적이라는 것을 의미한다. 당신의 질문을 정확하게 이해하지 못했습니까? – Patrickdev

0

(만 10 분명히 프로젝트에 적합한 하나를 찾을 수 있습니다 내 클래스 경로에)이 작업을 수행 도서관 찾기 :

org.springframework.security.crypto.codec.Hex.decode을 (someString) ;

public static byte [] decode (CharSequence s) { int nChars = s.length();

if (nChars % 2 != 0) { 
    throw new IllegalArgumentException("Hex-encoded string must have an even number of characters"); 
} 

byte[] result = new byte[nChars/2]; 

for (int i = 0; i < nChars; i += 2) { 
    int msb = Character.digit(s.charAt(i), 16); 
    int lsb = Character.digit(s.charAt(i+1), 16); 

    if (msb < 0 || lsb < 0) { 
     throw new IllegalArgumentException("Non-hex character in input: " + s); 
    } 
    result[i/2] = (byte) ((msb << 4) | lsb); 
} 
return result; 
} 
+0

안녕하세요, Christian 님, 저에게이 라이브러리를 다운로드하고 추가 할 수있는 참고 자료를 제공 할 수 있습니까? 죄송합니다. 내가 발견 한 유일한 공격은 http://static.springsource.org/spring-security/site/docs/3.1.x/apidocs/org/springframework/security/crypto/codec/Hex입니다. html –

+0

문제는이 작업을 수행하는 것입니다. 안드로이드 그리고 당신은 무거운 의존성을 끌어 들이고 싶지 않습니다. 아파치 2.0 라이센스를 따르고 있다면 (또는 할 수있다)이 코드를 복사하는 것을 고려해 볼 수있다. 그것은 두 가지 기능이다. BTW : 내 대답을 좋아한다면 그것을 upvote하시기 바랍니다. –

관련 문제