Ameer Adel
Ameer Adel

Reputation: 152

understanding VB code

i m working on translating code from VB to C#, though there are lots of great conversion websites, i still find the code ambiguous to me, since the documentation is really poor it approaches to useless, i thought about posting it here to see if i can get it clearer.

i need some elaboration on the code given below, and whats the use of the Buffer[] in the method below:

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

see, i know this code converts from hex to binary as the name suggests, yet i cant really figure the use of the Buffer[] in the context, i looked up the Mid function in string VB, but still can't figure out the use of the Buffer[] in this function, i would appreciate if someone explained the use of the buffer.

Upvotes: 0

Views: 268

Answers (1)

David Heffernan
David Heffernan

Reputation: 612784

In the code above, the parentheses are used to access elements of an array. So, Buffer(i) refers to the ith element of the array Buffer.

You can learn more about arrays in VB from any text book, or indeed from MSDN: http://msdn.microsoft.com/en-us/library/wak0wfyt.aspx

As for why the array Buffer is used in the first place, well that's to store the output of the function. The function takes a hex string as input and populates the byte array Buffer with the binary equivalent.

This does seem to be rather inefficient code though. And it presents a somewhat clumsy interface because it asks the caller to allocate the array. Rather than translating it, I think I would start here: How can I convert a hex string to a byte array?

Upvotes: 2

Related Questions