理解 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?