[c] unicode(hex) 를 unicode code point 값으로 변경하는 방법!
글쓴이: dkdlel12 / 작성시간: 목, 2011/03/31 - 11:33오전
안녕하세요
제목 그대로 유니코드 hex값을 유니코드 코드 포인트값으로 변경하는 방법이 궁금합니다!
예로 들어서 "가" 라는 글자의 경우
유니코드 hex 값은 "ea b0 80" 입니다.
그리고 유니코드 코드 포인트값은 "0xAC00" 이죠!
만약에 hex값이나 "가"라는 글자를 알때 유니코드 코드 포인트 값으로 변경하는 방법을 알고 싶습니다.
추가로 유니코드값 끼리의 연산이 필요하여, 유니코드 코드 포인트 값을 변수에 담는 법을 알고 싶네요
ex)
int hex=0;
hex = ("나"라는 글자의 코드포인트값)-0xAc00;
("나"라는 글자의 코드포인트값)을 연산이 가능하도록 변수에 담는 법을 알고싶어요
구글링을 아무리 해도 찾기가 힘드네요ㅠ
한수 가르쳐주세요!
Forums:
질문의 요지는.. UTF encoding된 문자의
질문의 요지는..
UTF encoding된 문자의 Unicode code point를 얻고 싶으신 거네요.
UTF도 UTF-8, UTF-16 등이 있구요.
(적어주신 코드는 UTF-16으로 보이네요..)
UTF-16이 Unicode code point를 어떻게 encoding 한것인지를 찾아서,
반대로 decoding 해주면 Unicode code point를 얻으실 수 있을 것으로 보입니다.
==============================
꿈꾸는소년
이거 흥미로우면서도 어렵네요.
정리된 문서들이 많기는 한데. 정작 써먹으려니 곤란한게 많아서 어렵습니다.
일단. http://blog.naver.com/nneat?Redirect=Log&logNo=60020829244
이 주소의 내용을 보면.
모음 변화시 [588 : 21 * 28] 만큼 이동함을 알 수 있다.라고 합니다.
가 - 44032
까 - 44620
나 - 45208
다 - 45796
따 - 46384
라 - 46972
마 - 47560 ....
세상에는 정리하고 확립해서 유용하게 만들어야 하는게 정말 너무 많은거 같습니다...
매번 이렇게 하는건 너무 큰 낭비로 보입니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
질문글에 적힌 단어들의 개념이 조금
질문글에 적힌 단어들의 개념이 조금 불분명합니다.
유니코드 코드 포인트는 유니코드 문자집합내의 위치이고,
유니코드HEX값라고 하심은 유니코드를 utf-8 인코딩 방식으로 변환했을 때의 byte 표현결과를 말씀하신 것으로 보입니다.
첫번째 질문은
구글에서 utf-8 encoding으로 검색하시면 되겠습니다.
추가질문에 대해서는
유니코드를 언어에서 어떻게 다루느냐는 언어에 따라서 천차만별입니다.
하지만 이 경우에도 언어(라이브러리) 내부에서 사용하는 방식(인코딩 등)이 정해져있기 때문에
말씀하신 유니코드의 코드포인트 값 사이의 연산(어디에 사용하실려는지 궁금합니다. ^^;;) 을 원하시는 방향대로 지원하리라 기대하기는 어렵겠습니다.
답변달아주신 모든분들 감사합니다!
답변달아주신 모든분들 감사합니다!
유니코드 관련 라이브러리를 쓰는게
유니코드 관련 라이브러리를 쓰는게 어떤가요?
icu까지 동원하는건 좀 오버일꺼 같고;; iconv나 glib정도만 써도 될듯?
http://library.gnome.org/devel/glib/stable/glib-Unicode-Manipulation.html#g-utf8-get-char
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
문제 해결했습니다.. 왠지 개인적인 느낌으로
문제 해결했습니다..
왠지 개인적인 느낌으로 iconv 함수라던지,, 어떤걸 쓰면 느려질까봐,,
단어에 대해서 비트로 쪼개어 unicode를 구하는 함수를 만들었습니다,
속도는 최강이군요,,ㅋㅋ
모든 답변에 감사드립니다!
댓글 달기