python输出GB2312和GBK码表

复制代码
# -*- coding: utf-8 -*-
# 94个区,每个区94个汉字/符号/python会throw exception的东东
# 内码 := <区码+0xa0> <位码+0xa0>, little endian. 0xa0+94=0xfe
# 汉字从1601(啊)开始,它的内码是B0 A1. 鳋的区位码是8794, 内码是F7 FE
import sys
qv = int(sys.argv[1]) if len(sys.argv) == 2 else 0
if qv < 1 or qv > 94: qv = 1
def pr(*args, **kwargs): kwargs['end'] = ''; print(*args, **kwargs)
s = ['','','','','','','','','','']
pr('   ')
for i in range(10): pr(s[i],'')
print()
for y in range(10):
    pr(s[y],'')
    for x in range(10):
        if y == 9 and x > 4: break
        if y == 0 and x == 0: pr('   ')
        else: 
            wei = y * 10 + x
            code = ((0xa0 + qv) << 8) | (0xa0 + wei)
            try: pr((code).to_bytes(2, 'big').decode('gb2312'), '')
            except Exception: pr('   ')
    print()
# 折腾了半天,写不动程序了,唉……
View Code
复制代码
复制代码
import sys
def pr(*args, **kwargs): kwargs['end'] = ''; print(*args, **kwargs)
def head():
    pr('    ')
    for i in range(16): pr('%2X ' % i)
    print()
for y in range(0x8140, 0xfefe, 16):
    t = y & 0xff
    if t < 0x40: continue
    elif t == 0x40: head()
    pr(hex(y)[2:5].upper(),'')
    for x in range(16):
        try: pr((y + x).to_bytes(2, 'big').decode('gbk'), '')
        except Exception: pr('  ')
    print()
View Code
复制代码

posted @   Fun_with_Words  阅读(243)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?









 和6张牌。

点击右上角即可分享
微信分享提示