ASCII to Base32

2019-09-21 16:00发布

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

3条回答
男人必须洒脱
2楼-- · 2019-09-21 16:48

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

Dim DataToEncode As Byte() = Encoding.UTF8.GetBytes(txtbox.Text)
查看更多
Deceive 欺骗
3楼-- · 2019-09-21 16:53

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.

查看更多
Deceive 欺骗
4楼-- · 2019-09-21 16:58

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.

查看更多
登录 后发表回答