Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 1761|回复: 0
打印 上一主题 下一主题

【求助】BCD码转换为ASCii码

[复制链接]

31

主题

12

好友

1416

积分

黄金长老

泰妍、徐玄最棒 <3

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

跳转到指定楼层
1#
发表于 2009-2-28 08:24 PM |只看该作者 |倒序浏览
各位帅气英俊,能力过人的大大们
请问一下,要实现这个功能,该怎么办?
我在MSDN社区那里找到了以下的:
  '由ASCII码转BCD码      
  Function     AscToBCD(ASCII()     As     Byte)     As     Byte()      
                Dim     i     As     Integer      
                Dim     bTemp     As     Byte      
                Dim     bBCD()     As     Byte      
                Dim     bAsc()     As     Byte      
                Dim     bA     As     Byte      
                Dim     bB     As     Byte      
                Dim     intLen     As     Integer      
                     
                intLen     =     UBound(ASCII)      
                     
                If     intLen     Mod     2     =     0     Then     intLen     =     intLen     +     1      
                ReDim     bAsc(intLen)     As     Byte      
                ReDim     bBCD((intLen     +     1)     /     2     -     1)     As     Byte      
                     
                For     i     =     0     To     UBound(ASCII)      
                                bAsc(i)     =     ASCII(i)      
                Next      
                     
                If     intLen     >     i     Then     bAsc(intLen)     =     &H0             '对数组不是偶数的补位      
                     
                For     i     =     0     To     intLen      
                                If     bAsc(i)     <     Asc("0")     Then      
                                                bAsc(i)     =     Asc("0")      
                                ElseIf     ((bAsc(i)     >     Asc("9"))     And     (bAsc(i)     <     Asc("A")))     Then      
                                                bAsc(i)     =     Asc("0")      
                                ElseIf     ((bAsc(i)     >     Asc("F"))     And     (bAsc(i)     <     Asc("a")))     Then      
                                                bAsc(i)     =     Asc("0")      
                                ElseIf     (bAsc(i)     >     Asc("f"))     Then      
                                                bAsc(i)     =     Asc("0")      
                                End     If      
                                    
                                If     (bAsc(i)     >=     Asc("0")     And     bAsc(i)     <=     Asc("9"))     Then      
                                                bA     =     bAsc(i)     -     Asc("0")      
                                ElseIf     (bAsc(i)     >=     Asc("a")     And     bAsc(i)     <=     Asc("z"))     Then      
                                                bA     =     bAsc(i)     -     Asc("a")     +     &HA      
                                Else      
                                                bA     =     bAsc(i)     -     Asc("A")     +     &HA      
                                End     If      
                                    
                                i     =     i     +     1      
                                    
                                If     bAsc(i)     <     Asc("0")     Then      
                                                bAsc(i)     =     Asc("0")      
                                ElseIf     ((bAsc(i)     >     Asc("9"))     And     (bAsc(i)     <     Asc("A")))     Then      
                                                bAsc(i)     =     Asc("0")      
                                ElseIf     ((bAsc(i)     >     Asc("F"))     And     (bAsc(i)     <     Asc("a")))     Then      
                                                bAsc(i)     =     Asc("0")      
                                ElseIf     (bAsc(i)     >     Asc("f"))     Then      
                                                bAsc(i)     =     Asc("0")      
                                End     If      
                                    
                                If     (bAsc(i)     >=     Asc("0")     And     bAsc(i)     <=     Asc("9"))     Then      
                                                bB     =     bAsc(i)     -     Asc("0")      
                                ElseIf     (bAsc(i)     >=     Asc("a")     And     bAsc(i)     <=     Asc("z"))     Then      
                                                bB     =     bAsc(i)     -     Asc("a")     +     &HA      
                                Else      
                                                bB     =     bAsc(i)     -     Asc("A")     +     &HA      
                                End     If      
                                    
                                bBCD((i     -     1)     /     2)     =     (bA     *     16)     Xor     bB      
                Next      
                     
                AscToBCD     =     bBCD      
  End     Function      
  ---------------------------------------------------------------      
     
  调用BCDToAsc      
  Private     Sub     Command1_Click()      
                Dim     bA(3)     As     Byte      
                Dim     bB()     As     Byte      
                Dim     i     As     Integer      
                     
                bA(0)     =     Asc("1")      
                bA(1)     =     Asc("0")      
                bA(2)     =     Asc("a")      
                bA(3)     =     Asc("F")      
                     
                bB     =     AscToBCD(bA)      
                For     i     =     0     To     UBound(bB)      
                                MsgBox     Hex(bB(i))      
                Next      
  End     Sub      
  结果为     &H10     和&HAF      
  ---------------------------------------------------------------      
     
  '由BCD转ASCII码      
  Function     BCDToAsc(BCD()     As     Byte)     As     Byte()      
                Dim     i     As     Integer      
                Dim     bTemp     As     Byte      
                Dim     bAsc()     As     Byte      
                Dim     intLen     As     Integer      
                     
                intLen     =     UBound(BCD)      
                ReDim     bAsc(intLen     *     2     +     1)     As     Byte     '重新定义数组上标      
                     
                For     i     =     0     To     intLen      
                                bTemp     =     (BCD(i)     /     16)     And     &HF      
                                If     bTemp     >     9     Then      
                                                bAsc(i     *     2)     =     bTemp     +     Asc("A")     -     10      
                                Else      
                                                bAsc(i     *     2)     =     bTemp     +     Asc("0")      
                                End     If      
                                    
                                bTemp     =     BCD(i)     And     &HF      
                                    
                                If     bTemp     >     9     Then      
                                                bAsc(i     *     2     +     1)     =     bTemp     +     Asc("A")     -     10      
                                Else      
                                                bAsc(i     *     2     +     1)     =     bTemp     +     Asc("0")      
                                End     If      
                Next      
                     
                BCDToAsc     =     bAsc      
  End     Function      
-----------------------------------------------------------------------------------------------------------------
问题来啦,这堆火星,我看没啊
谁能把这些文言文转换为白话文
希望你们能给我解答
万分感激!
em0068 em0068

P/s:我是OxfordExe2




收藏收藏0
您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-11-26 10:20 AM , Processed in 0.100535 second(s), 26 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部