Après avoir étudié le codage, nous avons appris la relation entre le codage GB2312 et le code de localisation. Après avoir essayé, nous avons obtenu ce programme.
Recherche, personne ne semblait l'écrire, alors je l'ai posté ici.
Première version originale:
http://bbs.blueidea.com
http://mytju.com/classcode/
Réimpression à tout moment, utilisez-le à tout moment.
1. Brève description
(1) La définition de la norme GB2312 est en fait le code de localisation.
Il y a 94 lignes au total, 94 colonnes, les lignes sont des codes de zone et les colonnes sont des nombres de bits.
Par exemple, le code régional du caractère "AH" est 16 et le nombre de bit est 01, et son code de position est 1601.
(2) Chaque caractère se compose de code régional + numéro de bit, représentant deux octets au total.
Chaque octet est 01-94, qui entre en conflit avec le contrôleur de communication 0-31.
Par conséquent, ajoutez respectivement le code de la zone et le numéro 32 pour éviter les conflits.
(3) À partir de ce qui précède, chaque octet est de 33-126, ce qui est en conflit avec le codage ASCII 0-127,
Donc, mettez la position la plus élevée à 1, c'est-à-dire ajouter 128 pour éviter les conflits.
Ainsi, à la fin, chaque octet est 161-254.
2. accomplir
Le principe est très simple, ajouté ou soustrait.
Je publierai la fonction que j'ai remplie ici directement.
La copie de code est la suivante:
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Functionchartoqwm (byValStr)
dimshex, chanteur, lent, ilow, ihigh, sresult
Shex = Hex (ASC (STR)) 'Obtenez le codage du code intérieur du caractère, comme B0A1, ce codage est dans le bon ordre et il n'est pas nécessaire d'échanger des bits élevés et bas.
SHIGH = Left (Shex, 2) 'obtient le bit élevé codé, comme B0.
Slow = à droite (Shex, 2) 'obtient le bit bas en codage, comme A1.
'GB2312 La plage de code intérieure est & ha1a1 - & hfefe, et chaque octet se situe entre A1-FE.
ifnot (shigh> = "a1" andshigh <= "fe") puis
Chartoqwm = ""
Sortie
endire
ifnot (slow> = "a1" etSlow <= "fe") puis
Chartoqwm = ""
Sortie
endire
«Le code d'échange GB n'utilise que 7 bits et la position élevée est 1, qui est le code intérieur. À son tour, la position élevée est de 0 et le code d'échange peut être obtenu.
ilow = clng ("& h" & lent) -128
ihigh = clng ("& h" & chreat) -128
«Le code de localisation entre en conflit avec le code de contrôle 0-31, donc après avoir ajouté 32, le code d'échange est celui-là. À son tour, soustrayez 32.
ilow = ilow-32
ihigh = ihigh-32
«OK, le code de localisation a été obtenu.
sresult = ""
IFIHIGH <10TEN
sresult = sresult & "0" & cstr (ihigh)
autre