理解VB代码

时间:2015-01-04 13:23:10

标签: vb.net function

我正在努力将代码从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 函数VB,但仍然无法弄清楚在这个函数中使用Buffer [],如果有人解释了缓冲区的使用,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

在上面的代码中,括号用于访问数组的元素。因此,Buffer(i)引用数组Buffer的i th 元素。

您可以从任何教科书或MSDN中了解有关VB中阵列的更多信息:http://msdn.microsoft.com/en-us/library/wak0wfyt.aspx

至于为什么首先使用数组Buffer,以及存储函数输出的原因。该函数将十六进制字符串作为输入,并使用二进制等效项填充字节数组Buffer

这似乎是相当低效的代码。它提供了一个有点笨拙的界面,因为它要求调用者分配数组。而不是翻译它,我想我会从这里开始:How can I convert a hex string to a byte array?