Visual Basic6编程中的汉字处理(2)
2008-02-23 06:50:30来源:互联网 阅读 ()
Dim TemVar As Byte '临时变量
Dim TemVar1 As Byte '临时变量
Dim X, Y As Integer
TemVar = byte1
For X = 1 To n '移多少位就循环多少次
For Y = 1 To 8 '从第一位(右边第一位)开始循环右移
Select Case Y
Case 1
If (TemVar And &H1) = &H1 Then '如果临时变量TemVar的第一位是1,
TemVar1 = &H1 '则将临时变量TemVar1置1,
Else
TemVar1 = &H0 '则将临时变量TemVar1置0,
End If
Case 2
If (TemVar And &H2) = &H2 Then '如果临时变量TemVar的第二位是1,
TemVar = TemVar Or &H1 '则将其第一位置1(其它位不变),
Else
TemVar = TemVar And &HFE '反之将第一位置0(其它位不变)
End If
Case 3
If (TemVar And &H4) = &H4 Then '操作与上面相同
TemVar = TemVar Or &H2
Else
TemVar = TemVar And &HFD
End If
Case 4
If (TemVar And &H8) = &H8 Then
TemVar = TemVar Or &H4
Else
TemVar = TemVar And &HFB
End If
Case 5
If (TemVar And &H10) = &H10 Then
TemVar = TemVar Or &H8
Else
TemVar = TemVar And &HF7
End If
Case 6
If (TemVar And &H20) = &H20 Then
TemVar = TemVar Or &H10
Else
TemVar = TemVar And &HEF
End If
Case 7
If (TemVar And &H40) = &H40 Then
TemVar = TemVar Or &H20
Else
TemVar = TemVar And &HDF
End If
Case 8
If (TemVar And &H80) = &H80 Then
TemVar = TemVar Or &H40
Else
TemVar = TemVar And &HBF
End If
If TemVar1 = &H1 Then '移完第八位后,如果TemVar1是1(即第一位是1)
TemVar = TemVar Or &H80 '则将TemVar的第八位置1
Else
TemVar = TemVar And &H7F '反之置0
End If
End Select
Next Y
Next X
byteRight = TemVar '将TemVar的值返回给函数名
End Function
尤其需要注意的是当把二进制数据写入文件中时,必须使用Byte数据类型的数组变量,而不是 String 变量。 String 被认为包含的是字符,而二进制型数据可能无法正确地存在 String 变量中。
五、一个实际应用案例
图形点阵液晶在现代单片机系统中是一种十分常用的显示设备,BP机、手机上的显示屏就是图形点阵液晶。它能显示汉字和图形,与行列式键盘组成了单片机系统中最常用的人机交互界面。但是直接从中文系统汉字字库中提取的汉字字模并不能直接在液晶上显示,通常都必须经过格式上的调整和转换。
1、图形点阵液晶的汉字字模
与在西文DOS中显示汉字不同的是,图形点阵液晶并不是简单地用画点的方式来描出汉字。以常用的HD61202图形点阵液晶显示控制模块为例,它能控制64×64点阵液晶的显示,其显示RAM共64行,分8页,每页8行,每一页的数据寄存器分别对应液晶屏幕上的8行点,对显示RAM的一个字节单位赋值就是对当前列的8行(一页)的像素点是否显示进行控制。连续16列和相邻的2页的32字节显示RAM就可以控制一个汉字的显示区域。对这些显示RAM赋以相应的值就可以显示出一个汉字。
HD61202图形点阵液晶显示控制模块的汉字字模的排列实际上是标准汉字字模排列形式旋转而成的。对标准汉字字模转换的目的就是在单片机系统的数据存储器中(如E2PROM)存储经过调整的连续32字节的16进制数。
2、实际源程序
以下这段程序是放置在汉字源文本输入框(SrcTxt)的Change事件中。通过判断输入在文本框内的字符的ASCII码是否小于零,就能判断输入的字符是不是汉字。这段程序还能计算汉字字符串的长度。同时把输入的汉字存储在一个临时文件TempSrc.txt中。由于这段代码是放在文本框的Change事件中,它能立即更新汉字个数的显示。
Private Sub SrcTxt_Change( )
Static SStr As String
Dim i As Integer
Dim TempFile, TempFileBinary As String
TotalNum = 0
L = Len(SrcTxt.Text)
For i = 1 To L
tmpStr = StrConv(Mid$(SrcTxt.Text, i, 1), vbWide)
If Asc(Mid$(SrcTxt.Text, i, 1)) < 0 Then
TotalNum = TotalNum 1
SStr = SrcTxt.Text
Else
MsgBox "写入的不是汉字!"
SrcTxt.Text = Left(SrcTxt.Text, Len(SrcTxt.Text) - 1)
Exit Sub
End If
Next i
LblNum.Caption = Str$(TotalNum) "个汉字"
TempFile = App.Path "\" "TempSrc.txt"
'TempFileBinary = App.Path "\" "TempSrcBinary.txt"
Open TempFile For Output As #1
Print #1, SrcTxt.Text
Close #1
End Sub
在实例中选用了UCDOS 5.0汉字系统中的16点阵字库Hzk16作为提取汉字字模的标准字库。
Private Sub CmdCnt_Click( )
Dim TempSrcFile As String
Dim TempDestFile As String
Dim TempFile As String
Dim HzFile As String
Dim To61202(32) As Integer
Dim p(1 To 2) As Byte
Dim C1, C2
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:在你的应用程序里实现简单的加密
下一篇:FSO对象模型在VB中的应用
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
