2012-11-02 3 views
1

저는 작업중인 Java 프로젝트에 대한 메소드 특정 메소드를 작성하고 있습니다. 주어진 UML은 (String, byte)숫자를 (문자열로) Java에서 바이트 배열로 변환하려면 어떻게해야합니까?

지금까지 인수를 받아 static byte[]의 수 반환 유형을 지정은 다음과 같습니다

public static byte[] convertNumToDigitArray(String number, byte numDigits) { 

} 

이 방법은 (String로서) 숫자로 변환하기로하는에 바이트의 배열 순서는 최하위 자리에서 최하위 자리까지 이어져야합니다. 예를 들어, 만약 번호 문자열은 배열의 인덱스 0은 7
마지막 인수 (numDigits)를 포함한다 전달 된 문자열의 길이와 일치해야합니다 "732"입니다.

나는이 작업을 수행하려면 어떻게 ?

+2

'numDigits'의 값을'number'의 값에서 유추 할 수 있다면, 왜 둘 다 필요합니까? –

답변

3

문자열의 각 문자는 charAt()을 사용하여 검색 할 수 있습니다.

public static byte[] convertNumToDigitArray(String number) { 
    if (number != null && number.matches("\\d*") { 
     byte[] result = new byte[number.length()]; 
     for (int i = 0; i < number.length(); i++) { 
      result[i] = Byte.parseByte("" + number.charAt(i)); 
     } 
     return result; 
    } else { 
     throw new IllegalArgumentException("Input must be numeric only"); 
    } 
} 
+0

그래, 이건 확실히 좋은 속임수 야; 너무 많은 사람들이 이것을 위해'Integer.parseInt' (또는 이와 유사한 것)을 사용하려고합니다. – arshajii

0

내가 두번째 매개 변수를 사용하여 이런 일을 할 것입니다 : 숯은 예를 들어, 빼서 그 자리 값으로 변환 할 수 있습니다 복잡한 코드는 여기에 있습니다.

단지 정렬 당신이 무엇을 의미없는 경우 JDK

public static byte[] convertNumToDigitArray(String number, byte numDigits) { 
    byte[] bytes = number.getBytes(); 
    Arrays.sort(bytes); 
    return bytes; 
} 

와 함께 제공되는 방법을 사용하여 뭐가 잘못, 그냥 줄을 제거합니다.

0

나는 우리가 같은 필요한 이유를 볼 수 없습니다 :

char c = number.charAt(0); 
byte b = c - '0'; 
+0

getBytes() 메서드를 사용하면 'number'의 각 숫자를 오름차순 인덱스에 저장합니까? – user1795595

관련 문제