title: Converting Byte to String in Visual Basic
body: <p>I am new to VB and I am trying to get a program to output text instead of hex. I found the code online, a program called maxiCOM. Here is the link <a href="http://www.innovatic.dk/knowledg/SerialCOM/SerialCOM.htm" rel="nofollow noreferrer">http://www.innovatic.dk/knowledg/SerialCOM/SerialCOM.htm</a>. The source code can be downloaded at the bottom of the page.
  <br /> <br /> 
  Unfortunately, the level of coding in the program is far above my level of understanding, and I don't really get how to change the output from hex to text. I would greatly appreciate it if someone could explain to me how to do this. The snippet of the code is </p>
  
  <pre><code>Public Class MaxiTester
  
  Dim SpaceCount As Byte = 0
  Dim LookUpTable As String = "0123456789ABCDEF"
  Dim RXArray(2047) As Char ' Text buffer. Must be global to be accessible from more threads.
  Dim RXCnt As Integer      ' Length of text buffer. Must be global too.
  
  ' Make a new System.IO.Ports.SerialPort instance, which is able to fire events.
  Dim WithEvents COMPort As New SerialPort
  
  Private Sub Receiver(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles COMPort.DataReceived
      Dim RXByte As Byte
      Do
          '----- Start of communication protocol handling -----------------------------------------------------------
          ' The code between the two lines does the communication protocol. In this case, it simply emties the
          '   receive buffer and converts it to text, but for all practical applications, you must replace this part
          '     with a code, which can collect one entire telegram by searching for the telegram
          '       delimiter/termination. In case of a simple ASCII protocol, you may just use ReadLine and receive
          '         in a global string instead of a byte array.
          ' Because this routine runs on a thread pool thread, it does not block the UI, so if you have any data
          '   convertion, encryption, expansion, error detection, error correction etc. to do, do it here.
          RXCnt = 0
          Do
              RXByte = COMPort.ReadByte
              RXArray(RXCnt) = LookUpTable(RXByte &gt;&gt; 4) ' Convert each byte to two hexadecimal characters
              RXCnt = RXCnt + 1
              RXArray(RXCnt) = LookUpTable(RXByte And 15)
              RXCnt = RXCnt + 1
              RXArray(RXCnt) = " "
              RXCnt = RXCnt + 1
              SpaceCount = (SpaceCount + 1) And 31      ' Insert spaces and CRLF for better readability
              If SpaceCount = 0 Then                    ' Insert CRLF after 32 numbers
                  RXArray(RXCnt) = Chr(13) ' CR
                  RXCnt = RXCnt + 1
                  RXArray(RXCnt) = Chr(10) ' LF
                  RXCnt = RXCnt + 1
              Else
                  If (SpaceCount And 3) = 0 Then        ' Insert two extra spaces for each 4 numbers
                      RXArray(RXCnt) = " "
                      RXCnt = RXCnt + 1
                      RXArray(RXCnt) = " "
                      RXCnt = RXCnt + 1
                  End If
              End If
          Loop Until (COMPort.BytesToRead = 0)
          '----- End of communication protocol handling -------------------------------------------------------------
          Me.Invoke(New MethodInvoker(AddressOf Display)) ' Start "Display" on the UI thread
      Loop Until (COMPort.BytesToRead = 0)  ' Don't return if more bytes have become available in the meantime
  End Sub
  
  ' Text display routine, which appends the received string to any text in the Received TextBox.
  
  Private Sub Display()
      Received.AppendText(New String(RXArray, 0, RXCnt))
  End Sub
  </code></pre>