理解 VB 代码
understanding VB code
我正在努力将代码从 VB 翻译成 C#,尽管有很多很棒的转换网站,但我仍然觉得这些代码对我来说模棱两可,因为文档真的很差,它几乎没有用,我想关于在这里发布它,看看我是否可以更清楚地了解它。
我需要对下面给出的代码进行一些详细说明,以及下面方法中 Buffer[] 的用途是什么:
Function hexToBin(ByVal str As String, ByRef Buffer() As Byte)
Dim strRemain As String
Dim firstChar As Boolean
Dim i, count, inputLen, remainLen As Integer
i = 0
count = 0
firstChar = True
strRemain = str
While Len(strRemain) > 0
If Mid(strRemain, 1, 1) = " " Then
firstChar = True
strRemain = Mid(strRemain, 2)
ElseIf firstChar = True Then
If Len(strRemain) = 1 Then
Buffer(count) = myVal(strRemain)
ElseIf Len(strRemain) >= 2 Then
Buffer(count) = myVal(Mid(strRemain, 1, 1)) * 16 + myVal(Mid(strRemain, 2, 1))
strRemain = Mid(strRemain, 3)
End If
count = count + 1
firstChar = False
Else
strRemain = Mid(strRemain, 2)
End If
Wend
hexToBin = count
End Function
看,我知道这段代码顾名思义是从十六进制转换为二进制,但我真的无法理解上下文中 Buffer[] 的使用,我查找了 Mid function in string VB, 但还是想不通这个函数中Buffer[]的用法,如果有人解释一下buffer的用法我将不胜感激。
在上面的代码中,括号用于访问数组的元素。所以,Buffer(i)
指的是数组 Buffer
.
的第 ith 个元素
您可以在 VB 中从任何教科书或 MSDN 中了解有关数组的更多信息:http://msdn.microsoft.com/en-us/library/wak0wfyt.aspx
至于为什么首先要用数组Buffer
,那是为了存放函数的输出。该函数将十六进制字符串作为输入,并用二进制等价物填充字节数组 Buffer
。
虽然这似乎是相当低效的代码。它提供了一个有点笨拙的接口,因为它要求调用者分配数组。与其翻译它,不如从这里开始:How can I convert a hex string to a byte array?
我正在努力将代码从 VB 翻译成 C#,尽管有很多很棒的转换网站,但我仍然觉得这些代码对我来说模棱两可,因为文档真的很差,它几乎没有用,我想关于在这里发布它,看看我是否可以更清楚地了解它。
我需要对下面给出的代码进行一些详细说明,以及下面方法中 Buffer[] 的用途是什么:
Function hexToBin(ByVal str As String, ByRef Buffer() As Byte)
Dim strRemain As String
Dim firstChar As Boolean
Dim i, count, inputLen, remainLen As Integer
i = 0
count = 0
firstChar = True
strRemain = str
While Len(strRemain) > 0
If Mid(strRemain, 1, 1) = " " Then
firstChar = True
strRemain = Mid(strRemain, 2)
ElseIf firstChar = True Then
If Len(strRemain) = 1 Then
Buffer(count) = myVal(strRemain)
ElseIf Len(strRemain) >= 2 Then
Buffer(count) = myVal(Mid(strRemain, 1, 1)) * 16 + myVal(Mid(strRemain, 2, 1))
strRemain = Mid(strRemain, 3)
End If
count = count + 1
firstChar = False
Else
strRemain = Mid(strRemain, 2)
End If
Wend
hexToBin = count
End Function
看,我知道这段代码顾名思义是从十六进制转换为二进制,但我真的无法理解上下文中 Buffer[] 的使用,我查找了 Mid function in string VB, 但还是想不通这个函数中Buffer[]的用法,如果有人解释一下buffer的用法我将不胜感激。
在上面的代码中,括号用于访问数组的元素。所以,Buffer(i)
指的是数组 Buffer
.
您可以在 VB 中从任何教科书或 MSDN 中了解有关数组的更多信息:http://msdn.microsoft.com/en-us/library/wak0wfyt.aspx
至于为什么首先要用数组Buffer
,那是为了存放函数的输出。该函数将十六进制字符串作为输入,并用二进制等价物填充字节数组 Buffer
。
虽然这似乎是相当低效的代码。它提供了一个有点笨拙的接口,因为它要求调用者分配数组。与其翻译它,不如从这里开始:How can I convert a hex string to a byte array?