Maury Markowitz Maury Markowitz - 1 month ago 5x Question

PCL-compatible Chr and Asc in VB?

I am porting an old VB code base to PCL-compatible format. I have managed to build new versions of things like Left and CInt, but Asc and Chr have me stumped. The typical answer is "import Microsoft.VisualBasic", but that does not exist in PCL.

In C# you simply cast the string to int to get the Unicode value. The equivalent would seem DirectCast in, but that does not work. Does anyone know how to write Asc and Chr in using PCL-compatible functions?


The key is System.Text.ASCIIEncoding.UTF.GetString/GetBytes. These both work on arrays so you have to copy your input (an Int32 in my case) into a Byte() before going into GetString, and a Substring(0,1) into a Char() before going into GetBytes. This is, of course, more complex than the C# solution, where you can just cast the char/int. anyway...

   Public Function Asc(CharIn As String) As Integer
        Dim c As Char = Convert.ToChar(CharIn.Substring(0, 1))
        Dim cArray(0) As Char
        cArray(0) = c
        Return Convert.ToInt32(System.Text.ASCIIEncoding.UTF8.GetBytes(cArray)(0))
    End Function
    Public Function Chr(NumIn As Integer) As String
        Dim bArray(0) As Byte
        Dim AscString As String
        bArray(0) = Convert.ToByte(NumIn)
        AscString = System.Text.ASCIIEncoding.UTF8.GetString(bArray)
        Return AscString
    End Function