Después de estudiar la codificación, aprendimos la relación entre el código de codificación y ubicación de GB2312. Después de intentarlo, obtuvimos este programa.
Buscar, nadie parecía escribirlo, así que lo publiqué aquí.
Primer lanzamiento original:
http://bbs.blueidea.com
http://mytju.com/classcode/
Reimprima en cualquier momento, úsalo en cualquier momento.
1. Breve descripción
(1) La definición del estándar GB2312 es en realidad el código de ubicación.
Hay 94 filas en total, 94 columnas, las filas son códigos de área y las columnas son números de bits.
Por ejemplo, el código de área del personaje "AH" es 16 y el número de bits es 01, y su código de posición es 1601.
(2) Cada personaje consta de código de área + número de bit, que representa dos bytes en total.
Cada byte es 01-94, que entra en conflicto con el controlador de comunicación 0-31.
Por lo tanto, agregue el código de área y el bit número 32 respectivamente para evitar conflictos.
(3) De lo anterior, cada byte es 33-126, lo que entra en conflicto con ASCII que codifica 0-127,
Entonces, coloque la posición más alta a 1, es decir, agregue 128 para evitar conflictos.
Entonces, al final, cada byte es 161-254.
2. Lograr
El principio es muy simple, agregue o reste.
Publicaré la función que completé aquí directamente.
La copia del código es la siguiente:
'-----------------------------------------------------------------------------------------------
FunctionChartoqwm (Byvalstr)
Dimshex, Blind, Lento, Ilow, Ihigh, Sresult
Shex = Hex (ASC (Str)) 'Obtenga la codificación del código interno del carácter, como B0A1, esta codificación está en el orden correcto y no hay necesidad de intercambiar bits altos y bajos.
Blind = izquierda (Shex, 2) 'obtiene el bit alto codificado, como B0.
lento = derecho (Shex, 2) 'obtiene el bit bajo de codificación, como A1.
'GB2312 El rango de código interno es & HA1A1-& HFEFE, y cada byte está entre A1-FE.
ifnot (Shigh> = "A1" yshigh <= "Fe") entonces
Chartoqwm = ""
Extinción
endif
ifnot (lento> = "a1" yslow <= "fe") entonces
Chartoqwm = ""
Extinción
endif
'El código de intercambio GB solo usa 7 bits, y la posición alta es 1, que es el código interno. A su vez, la posición alta es 0 y se puede obtener el código de intercambio.
ilow = clng ("& h" & lento) -128
iHigh = Clng ("& H" & Blind) -128
'El código de ubicación entra en conflicto con el código de control 0-31, por lo que después de agregar 32, el código de intercambio es el indicado. A su vez, reste 32.
Ilow = Ilow-32
ihigh = iHigh-32
'Ok, se ha obtenido el código de ubicación.
sresult = ""
ifihigh <10
sresult = sresult & "0" & cstr (ihigh)
demás