Visual Basic6编程中的汉字处理(2)

2008-02-23 06:50:30来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  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中的应用