PowerBasic实现的16进制字符串和Asc字符串的转换

做通信经常遇到字符串的转换,这种实现不是最快的,但是是空间和时间都比较理想
 1 'Hex转Byte数组
 2 Function Hex2Byte(ByVal sHex As String,ByRef bData() As Byte) As Long
 3 Dim nIndex As Long,nBnd As Long
 4 Dim pHex As Byte Ptr
 5 Dim mAscData(127) As Byte At CodePtr(ASC_DATA)
 6 
 7 nBnd=Len(sHex)\2-1
 8 ReDim bData(nBnd)
 9 pHex=StrPtr(sHex)
10 For nIndex=0 To nBnd
11 bData(nIndex)=mAscData(@pHex[nIndex * 2]) * 16 + mAscData(@pHex[nIndex * 2 + 1])
12 Next nIndex
13 End Function
14 
15 AsmData ASC_DATA
16 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
17 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
18 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
19 DB 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0 '48-63
20 DB 0,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0 '64-79
21 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 '80-95
22 DB 0,10,11,12,13,14,15,0,0,0,0,0,0,0,0,0 '96-111
23 End AsmData
24 
25 'Byte数组转Hex
26 Function Byte2Hex(ByRef bData() As Byte) As String
27 Dim sHex As String
28 Dim bHex() As Byte
29 Dim nIndex As Long,nBnd As Long,nSize As Long
30 Dim mHexData(15) As Byte At CodePtr(HEX_DATA)
31 
32 nBnd=UBound(bData)
33 nSize=(nBnd+1)*2
34 ReDim bHex(nSize-1)
35 For nIndex=0 To nBnd
36 bHex(nIndex * 2) = mHexData(bData(nIndex) \ 16)
37 bHex(nIndex * 2 + 1) = mHexData(bData(nIndex) Mod 16)
38 Next nIndex
39 sHex=Peek$(VarPtr(bHex(0)),nSize)
40 Function=sHex
41 End Function
42 
43 AsmData HEX_DATA
44 DB 48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70 '0-F
45 End AsmData

 

转载于:https://www.cnblogs.com/seven365/p/5248074.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值