Setelah mempelajari pengkodean, kami mempelajari hubungan antara pengkodean GB2312 dan kode lokasi. Setelah mencoba, kami mendapatkan program ini.
Cari, sepertinya tidak ada yang menulisnya, jadi saya mempostingnya di sini.
Rilis pertama asli:
http://bbs.blueidea.com
http://mytju.com/classcode/
Cetak ulang kapan saja, gunakan kapan saja.
1. Deskripsi singkat
(1) Definisi standar GB2312 sebenarnya adalah kode lokasi.
Ada 94 baris total, 94 kolom, baris adalah kode area, dan kolom adalah bit nomor.
Misalnya, kode area karakter "ah" adalah 16 dan bit nomor adalah 01, dan kode posisinya adalah 1601.
(2) Setiap karakter terdiri dari kode area + nomor bit, akuntansi untuk total dua byte.
Setiap byte adalah 01-94, yang bertentangan dengan pengontrol komunikasi 0-31.
Oleh karena itu, tambahkan kode area dan bit nomor 32 masing -masing untuk menghindari konflik.
(3) Dari yang di atas, setiap byte adalah 33-126, yang bertentangan dengan pengkodean ASCII 0-127,
Jadi letakkan posisi tertinggi ke 1, yaitu, tambahkan 128 untuk menghindari konflik.
Jadi, pada akhirnya, setiap byte adalah 161-254.
2. Capai
Prinsipnya sangat sederhana, tambahkan atau kurangi.
Saya akan memposting fungsi yang saya selesaikan di sini secara langsung.
Salinan kode adalah sebagai berikut:
'-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
FunctionChartoQWM (BYVALSTR)
Dimshex, Shigh, Slow, Ilow, Ihigh, Sresult
shex = hex (ASC (str)) 'Dapatkan pengkodean kode dalam karakter, seperti B0A1, pengkodean ini berada dalam urutan yang benar dan tidak perlu bertukar bit tinggi dan rendah.
Shigh = kiri (shex, 2) 'mendapatkan bit tinggi yang dikodekan, seperti B0.
Slow = Right (Shex, 2) 'Mendapat bit rendah pengkodean, seperti A1.
'GB2312 Rentang Kode Dalam IS & HA1A1-& HFEFE, dan setiap byte adalah antara A1-Fe.
ifnot (shigh> = "a1" and highigh <= "fe") lalu
Chartoqwm = ""
Fungsi keluar
endif
ifnot (slow> = "a1" andslow <= "fe") lalu
Chartoqwm = ""
Fungsi keluar
endif
'Kode pertukaran GB hanya menggunakan 7 bit, dan posisi tinggi adalah 1, yang merupakan kode dalam. Pada gilirannya, posisi tinggi adalah 0, dan kode swap dapat diperoleh.
ilow = clng ("& h" & slow) -128
ihigh = clng ("& h" & shigh) -128
'Kode lokasi bertentangan dengan kode kontrol 0-31, jadi setelah menambahkan 32, kode pertukaran adalah satu. Pada gilirannya, kurangi 32.
ilow = ilow-32
ihigh = ihigh-32
'Oke, kode lokasi telah diperoleh.
sresult = ""
ifihigh <10then
sResult = sResult & "0" & cstr (ihigh)
kalau tidak