Sunday, December 24, 2006
Java/자바] 16진수 문자열을 정수로 변환 계산; 십육진수 헥사(Hex) 문자열을 숫자로
숫자인 16진수라면 0x 라는 접두사만 붙이면 계산이 되지만, 16진수 문자열이라면 약간 다듬어 주어야 합니다.
"FF" 이런 십육진수 문자열은 Integer.parseInt() 로 직접 숫자로 변환할 수 있습니다.
그런데 "0xFF" 이런 십육진수 문자열은, 앞의 "0x" 를 제거해 준 후, Integer.parseInt() 에 넣어야 합니다. 다음 예제와 같습니다.
파일명: Foo.java
Integer.parseInt()에서
"0xFF" 이렇게 "0x" 라는 접두사를 붙이면
Exception in thread "main" java.lang.NumberFormatException: For input string: "0xFF"
이런 에러가 납니다.
이때는
replaceFirst 메소드에서 ^0x 라는 정규식을 사용하여, "0xFF" 라는 문자열 앞쪽의 "0x" 를 삭제하면 됩니다.
정규식에서 캐럿 기호(^)는, "문자열의 시작"을 의미하기에, 문자열 맨 앞의 "0x" 부분을 가리키게 됩니다.
"0XFF" 이렇게 대문자 0X 로 접두사를 붙인 경우, 대소문자 구분 없이 치환하려면
h2 = h2.replaceFirst("(?i)^0x", "");
이렇게 (?i) 라는 옵션을 넣어주면 됩니다.
▶▶ Java/자바] 16진수 계산하는 법; 십육진수 헥사(Hex)값 계산
▶▶ 자바/Java] 문자열을, 숫자(정수/실수)로 변환; String to Number (int float double)
"FF" 이런 십육진수 문자열은 Integer.parseInt() 로 직접 숫자로 변환할 수 있습니다.
그런데 "0xFF" 이런 십육진수 문자열은, 앞의 "0x" 를 제거해 준 후, Integer.parseInt() 에 넣어야 합니다. 다음 예제와 같습니다.
십육진수 문자열을 정수 숫자로 변환 예제
파일명: Foo.java
public class Foo {
public static void main(String[] args) {
String h = "FF";
int n = Integer.parseInt(h, 16);
n++; // 이제 숫자가 되었으니 ++ 로, 더하기 1을 할 수 있음
System.out.println(n);
// 출력 결과: 256
// 255+1=256
String h2 = "0xFF";
// 접두사 0x 제거 하기
h2 = h2.replaceFirst("^0x", "");
System.out.println(h2); // FF
int n2 = Integer.parseInt(h2, 16);
n2++;
System.out.println(n2);
// 출력 결과: 256
}
}
public static void main(String[] args) {
String h = "FF";
int n = Integer.parseInt(h, 16);
n++; // 이제 숫자가 되었으니 ++ 로, 더하기 1을 할 수 있음
System.out.println(n);
// 출력 결과: 256
// 255+1=256
String h2 = "0xFF";
// 접두사 0x 제거 하기
h2 = h2.replaceFirst("^0x", "");
System.out.println(h2); // FF
int n2 = Integer.parseInt(h2, 16);
n2++;
System.out.println(n2);
// 출력 결과: 256
}
}
Integer.parseInt()에서
"0xFF" 이렇게 "0x" 라는 접두사를 붙이면
Exception in thread "main" java.lang.NumberFormatException: For input string: "0xFF"
이런 에러가 납니다.
이때는
replaceFirst 메소드에서 ^0x 라는 정규식을 사용하여, "0xFF" 라는 문자열 앞쪽의 "0x" 를 삭제하면 됩니다.
정규식에서 캐럿 기호(^)는, "문자열의 시작"을 의미하기에, 문자열 맨 앞의 "0x" 부분을 가리키게 됩니다.
"0XFF" 이렇게 대문자 0X 로 접두사를 붙인 경우, 대소문자 구분 없이 치환하려면
h2 = h2.replaceFirst("(?i)^0x", "");
이렇게 (?i) 라는 옵션을 넣어주면 됩니다.
▶▶ Java/자바] 16진수 계산하는 법; 십육진수 헥사(Hex)값 계산
▶▶ 자바/Java] 문자열을, 숫자(정수/실수)로 변환; String to Number (int float double)
tag: java
자바 | Java
tag: regex
정규식 | 정규표현식 | Regex | Regular Expression
<< Home