1바이트 문자인지의 여부를 검증?
글쓴이: saintrole / 작성시간: 목, 2004/01/08 - 4:13오후
안녕하세요. bbs.kldp 가족분들. ^^
새해복 많이 받으시구요~
질문이 하나 있습니다.
밑에 예시를 뒀는데요. if(0x81... ... )이부분 설명좀 부탁드려요.
어떻게 검증하는건가요?
/* 1바이트 문자인지의 여부를 검증한다 */ int IsByte1st(int c) { // 문자열의 char형 문자도 다룰 수 있도록 unsigned char형으로 변환한다 unsigned char uch = c; // 1 바이트 문자인지 여부를 검증한다 if (uch >= 0x81 && uch <= 0x9f || uch >= 0xe0 && uch <= 0xfc) return 1; else return 0; }
Forums:
한글코드(2byte)인지 영문코드(1byte)인지를 가려주는 로직 같군요
한글코드(2byte)인지 영문코드(1byte)인지를 가려주는 로직 같군요.
확실한지는 몰겠습니다.
ㅎㅎㅎㅎ
그런데 제가 이해한 대로라면 한 바이트 문자일때
return 이 0이 되는 군요 ?
함수 이름대로라면 1이 되어야 하는거 아닌가요?
VENI, VIDI, VICI - Caesar, Gaius Julius -
2byte 문자의 Leading byte인지를 판별하는 코드입니다.그
2byte 문자의 Leading byte인지를 판별하는 코드입니다.
그래서 함수이름도 IsByte1st인것 같군요.
주석이 아주 틀리지는 않습니다만, 당산님처럼 오해할 수도 있어서 적절치는 않은 듯 하네요.
위의 조건문이 Leading Byte인지 판별하는 부분입니다. 저 영역에 있으면 Leading Byte. 곧 뒤이어 오는 문자는 이 녀석과 한쌍이겠지요.
한데, 위의 leading byte character 판별법이 완벽하지는 않습니다. 제 기억이 맞다면, 위의 예는 '일본어'에만 한정됩니다. 일본어와 다른 2byte 문자(한글 등)가 다르거든요. 위를 기준으로 하면 다른 언어를 파싱할 때 문제가 생기고, 한글의 경우를 기준으로 하면 일본어를 파싱할 때 문제가 생깁니다.
아마 한글인 경우에는
였던것 같습니다.
Double Byte Character 등으로 googling 해보시면 더 많은, 정확한 정보가 나올 겁니다.
May The Force Be With You.
아..당산님 , atdda님답변 감사합니다.책의 원판이 일
아..
당산님 , atdda님답변 감사합니다.
책의 원판이 일본어책이네요.
말씀대로
저 구문은 일본어를 구분해내기 위한 판별코드인거 같네요.
바쁘신대도 답변해주셔서 감사합니다.
어떤 책 예제 보고 올리신 글인지 알겠네요 영진 함수 사용법저도 이책
어떤 책 예제 보고 올리신 글인지 알겠네요 영진 함수 사용법
저도 이책 지금 보고 있습니다.
저자가 일본사람이라 그런 것 같네요.
참고하세요 ^^
AirPlug
댓글 달기