NLP研究小白 2022-09-26 13:32 采纳率: 0%
浏览 44
已结题

python代码显示汉字

问题遇到的现象和发生背景

用python代码显示汉字

用代码块功能插入代码,请勿粘贴截图
import os
import struct
import time 

def GetHZOffset(HZ):
    GB=HZ.encode("gbk")
    #GBVal=struct.unpack("BB",GB)
    return ((GB[0]-0xa1)*94+GB[1]-0xa1)*32
    
def GetHZArray(In,HZ,HZArray):
    Offset=GetHZOffset(HZ)
    In.seek(Offset,0)
    HZInfo=In.read(32)
    HZValue=struct.unpack("32B",HZInfo)
    No=0
    HZArray.append([])

    for i in range(32):
        for j in range(8):
            if ((0x80>>j) & HZValue[i] ) == 0:
                HZArray[No].append(" ")
            else:
                HZArray[No].append("*")
        if i%2 == 1:
            No=No+1    
            HZArray.append([])
    
def Append(HZsArrayLine,HZArrayLine):
    HZsArrayLine.append(" ")
    for i in range(16):
        HZsArrayLine.append(HZArrayLine[i])
    
def Add2HZsArray(HZArray,HZsArray):
    for i in range(16):
        Append(HZsArray[i],HZArray[i])
    

def SetHZsArray(HZs,HZLib,HZsArray):
    In=open(HZLib,"rb")
    for HZ in HZs:
        HZArray=[]
        GetHZArray(In,HZ,HZArray)
        Add2HZsArray(HZArray,HZsArray)
    In.close()
    
def Display(HZsArray):
    i=0
    while(1):
        time.sleep(1)
        os.system("cls")

        for k in range(16):
            for j in range(i,len(HZsArray[0])):
                print(HZsArray[k][j],end="")    
            for j in range(0,i):
                print(HZsArray[k][j],end="")
            print("")

        if i ==  len(HZsArray[0]):
            i=0
        else:    
            i=i+1
            
def ShowHZs(HZs,HZLib):
    HZsArray=[]
    for i in range(16):
        HZ=[]
        HZsArray.append(HZ)
    SetHZsArray(HZs,HZLib,HZsArray)
    Display(HZsArray)

HZs="大家好"
HZLib="hzk.dat"    
ShowHZs(HZs,HZLib)
运行结果及报错内容

现在可以实现横向循环显示,无报错。

我的解答思路和尝试过的方法

修改循环方式也没有成功

我想要达到的结果

想问一下大家,怎么修改,才能让他整体汉字竖向循环显示?期待大家的回复。

  • 写回答

1条回答 默认 最新

  • honestman_ 2022-09-26 13:39
    关注
    import os
    import struct
    import time
    
    
    def GetHZOffset(HZ):
        GB = HZ.encode("gbk")
        # GBVal=struct.unpack("BB",GB)
        return ((GB[0] - 0xa1) * 94 + GB[1] - 0xa1) * 32
    
    
    def GetHZArray(In, HZ, HZArray):
        Offset = GetHZOffset(HZ)
        In.seek(Offset, 0)
        HZInfo = In.read(32)
        HZValue = struct.unpack("32B", HZInfo)
        No = 0
        HZArray.append([])
    
        for i in range(32):
            for j in range(8):
                if ((0x80 >> j) & HZValue[i]) == 0:
                    HZArray[No].append(" ")
                else:
                    HZArray[No].append("*")
            if i % 2 == 1:
                No = No + 1
                HZArray.append([])
    
    
    def Append(HZsArrayLine, HZArrayLine):
        HZsArrayLine.append(" ")
        for i in range(16):
            HZsArrayLine.append(HZArrayLine[i])
    
    
    def Add2HZsArray(HZArray, HZsArray):
        for i in range(16):
            Append(HZsArray[i], HZArray[i])
    
    
    def SetHZsArray(HZs, HZLib, HZsArray):
        In = open(HZLib, "rb")
        for HZ in HZs:
            HZArray = []
            GetHZArray(In, HZ, HZArray)
            Add2HZsArray(HZArray, HZsArray)
        In.close()
    
    
    def Display(HZsArray):
        i = 0
        while (1):
            time.sleep(1)
            os.system("cls")
    
            for k in range(16):
                for j in range(i, len(HZsArray[0])):
                    print(HZsArray[k][j], end="\n")
                for j in range(0, i):
                    print(HZsArray[k][j], end="\n")
                print("")
    
            if i == len(HZsArray[0]):
                i = 0
            else:
                i = i + 1
    
    
    def ShowHZs(HZs, HZLib):
        HZsArray = []
        for i in range(16):
            HZ = []
            HZsArray.append(HZ)
        SetHZsArray(HZs, HZLib, HZsArray)
        Display(HZsArray)
    
    
    HZs = "大家好"
    HZLib = "hzk.dat"
    ShowHZs(HZs, HZLib)
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月28日
  • 创建了问题 9月26日

悬赏问题

  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22