[질문] 2Byte 단어의 첫 바이트 구분 방법
핫다홍
안녕하세요^^;;
String str=안1녕;
위처럼 5바이트의 문자열이 있다고 가정한다면..
byte[] b = str.getBytes()를 하게되면 바이트 단위로 조각나게 됩니다.
이때, b[2]는 ASCII문자라서 1바이트 문자열입니다.
하지만 b[0],b[1]또는b[3],b[4]는 원래부터 2바이트 문자열입니다.
이렇게 b[2]를 제외한 한글을 포함해서 2바이트 문자열중특정 위치가
2Byte문자열의 시작바이트인지 아닌지 편하게 체크하는 방법이 있는지요??
위에서는 b[0]과 b[3]이 2Byte문자중 시작 바이트가 되겠죠^^;;
System.out.println(chk(b[0]);
System.out.println(chk(b[3]);위의 chk()라는 임의의 함수처럼 전달된 Byte가 특정 문자의 시작 바이트 인지
아닌지 자바 자체에서 제공하는 체크방법이 있으면 답변 부탁드리겠습니다^^
현재는 위 문제를 해결하기위해 무식하게 무조건첫번째 바이트부터
지정된 위치까지를 직접 한/영체크를 하면서 계산하고 있습니다-_-;;
문자열이 위처럼 짧으면 모르겠지만 문자열이 길어지고 체크를 원하는 위치가 뒤로 갈 수록데미지가 크다는--;;
어렴풋한 기억으로는 예전에 특정 단어의 범위및 범주를 체크하는 방법을본 기억이 있는거 같아서 질문해봅니다.
-
글고운
다이렉트로 99번째 위치에서 추출 후 사용하고자 하는데..
현재로는 부득이 첫 글자부터 카운팅 하는 방법 뿐이 없나 봅니다. 좋은하루되세요. -
으뜸
답변 감사합니다만^^
해당 자료는 지정된 문자열의 첫 글자부터 계속 판단하는 방식이라서
제가 임시로 구현한것과 같은 방식입니다.
문자열이 100글자일때 99번째에서 절단하려면 0부터 99까지 카운팅하는 방식이거든요. -
새얀
아.. 쉽게 보면... 게시판의 목록에서 게시글이 20Byte를 초과하면 20Byte에서 절단후 ... 을 찍는것과 유사합니다.
이때 20Byte의 글자가 한글의 첫 바이트라면... 글자가 깨지겠죠^^
(JDK 자체에서 제공하는 Byte추출 기능은 O/S와 JDK버전에 따라 결과가 달라지더군요) -
비내리던날
byte[] b = str.getbytes() 으로 바이트 처리된 각각의 문자값을 출력하면...
128보다 크거나 작은건 의미 없을듯 싶습니다^^
현재로선 무식한 방법이지만-_- 수다님 말씀처럼
문자열의 첫 글자부터 charat을 이용해서 일일이 처리하고 있는데...
이렇게 되면 문자열 길이에 따라서 속도가 너무 처지거든요-_-;;
그래서 지정된 위치의 글자를 바로 알아 내고자 하는데.. 기억이 안나네요..ㅠㅠ;; -
무들
답변 감사합니다^^;;
질문 드린것처럼 주 목적은 스트링의 바이트 처리입니다^^;;
특정 위치의 바이트를 추출하는게 목적이거든요.
예를들어 인덱스 0부터 10까지 추출이라거나...
자바 자체의 String()클레스가 유사 기능을 제공해주지만
2Byte 문자에 대해서는 오동작 하더군요^^
그리고 charAt의 경우는 바이트가 아닌 문자 처리라서 힘들듯 싶구요. -
아리알찬
charAt(int i) 메쏘드로 한문자씩 떼와서 int로 변환(굳이 할필요는 없음.-_-)해서 윗분말씀 처럼 128보다 작으면 아스키 문자고 크면 유니코드 문자고 그렇게 될것 같은데요.. 한글 유니코드 할당범위 내에 들어가는 수치라면 한글이고 아니면 아스키나 다른 나라 문자고..
혹시 렉서만드신다면 문자를 char나 int단위로 처리하는게 몸에 좋습니다.. 경험상..^^ -
Schokolade
n번째 byte 가 2바이트 문자에 속하는지 보시기 위해서라면..
n번째 byte 가 128 보다 크다면 2byte 문자의 시작이고,
n번째 byte 가 128 보다 작다면
n-1 번째의 문자 값을 보고, 이 값이 128 보다 크다면 n번째 byte 는 2byte 문자의 뒷바이트,
n-1 번째의 문자 값을 보고, 이 값이 128 보다 작다면 n번째 byte 는 1byte 문자이겠군요~ ^_^
지금 머릿속으로 생각한거라~ ^_^;; 직접 확인해 보 -
겨루
2바이트 문자의 첫번째 바이트 값은 아스키코드 128 보다 큽니다 ^_^
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2696043 | 제이쿼리 .scroll() 관련 질문드립니다 | 이거이름임 | 2025-05-26 |
2695984 | 마크업상으로 하단에 있으나 우선적으로 이미지파일을 다운로드받는 방법 (1) | 들꿈 | 2025-05-25 |
2695934 | tr 속성값 (9) | 새 | 2025-05-25 |
2695905 | ASP로 개발됐을 때 css가 달라져요 ㅠㅠ (4) | 슬아라 | 2025-05-24 |
2695878 | form을 이용한 다른 페이지로 넘기는 방법을 알려주세요 (1) | 핫파랑 | 2025-05-24 |
2695844 | 저기 암호화 및 복호화 프로그램.. 만들어볼려는대 (2) | 한빛 | 2025-05-24 |
2695814 | [질문] PDA에서 애플릿이 가능한가요? (1) | 봄시내 | 2025-05-24 |
2695785 | 웹 설정 도와줄분 | 화이트캣 | 2025-05-23 |
2695730 | 갑자기 기억이 안나는데 accesskey 속성.. | 빛나라 | 2025-05-23 |
2695702 | [질문] Java 버전 차이에 의한 오류?!! (2) | 검사 | 2025-05-23 |
2695672 | 자바 임베디드 쪽으로 배우고 싶은데요..질문이요.. (1) | 뽀그리 | 2025-05-22 |
2695647 | 헉! 이클립스(v3.1)에서 발생되는 널포인트 익셉션? ;;; (3) | 아빠몬 | 2025-05-22 |
2695586 | IFRAME 캐싱 질문 | 봄나비 | 2025-05-22 |
2695498 | [질문]실행가능한 jar파일.. 정말 이해가 안가네요... ㅡㅜ;; | 터1프한렩 | 2025-05-21 |
2695468 | 자바랑 이클립스에서요.. | 스킬 | 2025-05-21 |
2695375 | Mysql 연동하는 자바 질문있습니다. | 아리솔 | 2025-05-20 |
2695319 | 파워포인트 파일을 저장할 수 있을까요? | 시윤 | 2025-05-19 |
2695289 | [질문]Tween 값의 정도를 알고 싶습니다. | 타마 | 2025-05-19 |
2695238 | c 와 c++의 시작 (10) | ChocoHoilc | 2025-05-18 |
2695215 | 탑메뉴의 repeat-x .배경이 두가지에요ㅠ ㅠ | 널위해 | 2025-05-18 |