ASCII to Base32

2019-09-21 16:13发布

问题:

I am working at making what 10 characters go into a text box in my vb project convert into Base32. Here is my code. I am getting an error Value of type 'String' cannot be converted to 'Byte()'. WindowsApplication2

Private Sub Ok_Click(sender As Object, e As EventArgs) Handles Ok.Click

Dim DataToEncode As Byte() = txtbox.Text

Dim Base32 As String
Base32 = DataToEncode.ToBase32String()
Auth.Text = Base32
End Sub

回答1:

The value in txtbox.Text is a string which can't be automatically converted to a byte array. So the line Dim DataToEncode As Byte() = txtbox.Text can't be compiled. To get the ASCII representation of a string use the System.Text.Encoding.ASCII.GetBytes() method.

Dim DataToEncode As Byte() = System.Text.Encoding.ASCII.GetBytes(txtbox.Text)

Also strings in VB.Net do not store ASCII values, they use UTF-16.



回答2:

As the error indicates, you're trying to take a string (the context of txtbox.Text) and put it in a variable of type Byte(), an array of bytes. A string isn't a byte array, it's a logical sequence of characters that can have different representation in bytes - do you want to treat it as a UTF-8-encoded string? An ASCII string? A full-blown UTF-32 string? All these are different byte representations of what might be the same textual data.

Once you know the representation you care about, use the System.Text.Encoding classes to convert the text to a Byte() and pass that to your method.



回答3:

Try converting the string into a byte array using the GetBytes method:

Dim DataToEncode As Byte() = Encoding.UTF8.GetBytes(txtbox.Text)