인코딩을 연구 한 후 GB2312 인코딩과 위치 코드 간의 관계를 배웠습니다. 시도한 후, 우리는이 프로그램을 얻었습니다.
검색, 아무도 쓰지 않는 것 같아서 여기에 게시했습니다.
원래 첫 릴리스 :
http://bbs.blueidea.com
http://mytju.com/classcode/
언제든지 재 인쇄하고 언제든지 사용하십시오.
1. 간단한 설명
(1) GB2312 표준의 정의는 실제로 위치 코드입니다.
총 94 개의 행, 94 개의 열, 행은 영역 코드이며 열은 비트 숫자입니다.
예를 들어, 문자 "ah"의 영역 코드는 16이고 비트 번호는 01이고 위치 코드는 1601입니다.
(2) 각 문자는 면적 코드 + 비트 번호로 구성되며 총 2 바이트를 차지합니다.
각 바이트는 01-94이며 통신 컨트롤러 0-31과 충돌합니다.
따라서 충돌을 피하기 위해 영역 코드와 비트 번호 32를 각각 추가하십시오.
(3) 위에서, 각 바이트는 33-126이며, 이는 0-127을 인코딩하는 ASCII와 충돌합니다.
따라서 최고 위치를 1로 올리십시오. 즉, 충돌을 피하기 위해 128을 추가하십시오.
결국, 각 바이트는 161-254입니다.
2. 성취
원칙은 매우 간단하거나 추가 또는 빼기입니다.
여기에 직접 완료 한 기능을 게시하겠습니다.
코드 사본은 다음과 같습니다.
'-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
functionchartoqwm (byvalstr)
Dimshex, Shigh, Slow, Ilow, ihigh, sresult
shex = hex (asc (str)) 'B0A1과 같은 문자의 내부 코드를 인코딩하는 것은 올바른 순서이며 높고 낮은 비트를 교환 할 필요가 없습니다.
Shigh = Left (shex, 2) 'B0과 같이 인코딩 된 높은 비트를 얻습니다.
slow = right (shex, 2) 'A1과 같이 인코딩 낮은 비트를 얻습니다.
'GB2312 내부 코드 범위는 & ha1a1- & hfefe이며 각 바이트는 a1-fe 사이입니다.
그런 다음 ifnot (Shigh> = "a1"and shigh <= "fe")
Chartoqwm = ""
종료 기능
endif
ifnot (slow> = "a1"andslow <= "fe")
Chartoqwm = ""
종료 기능
endif
'GB Exchange 코드는 7 비트 만 사용하고 높은 위치는 1이며 이는 내부 코드입니다. 차례로 높은 위치는 0이고 스왑 코드를 얻을 수 있습니다.
ilow = clng ( "& h"& slow) -128
ihigh = clng ( "& H"& Shigh) -128
'위치 코드는 제어 코드 0-31과 충돌하므로 32를 추가 한 후 교환 코드가 하나입니다. 차례로 32를 빼십시오.
ilow = ilow-32
ihigh = ihigh-32
'좋아요, 위치 코드가 얻어졌습니다.
sresult = ""
ifihigh <10then
sresult = sresult & "0"& cstr (ihigh)
또 다른