Gå til innhold

VB.net konvertering fra binært til ascii


Anbefalte innlegg

Holder på med en konverterer mellom ascii - binært og omvendt.

 

Konverteringen skjer i sanntid, ved å bruke tekstfeltet.textchanged

 

Har googlet meg fram til en funksjon som konvertererer fra binært til ascii, men sliter litt med at den rett og slett... ja.. konverterer i sanntid.

 

Problemet er at programmet kræsjer om jeg ikke plotter inn 8 karakterer om gangen. Som jo er forståelig.

Hvordan kan jeg få den til å ikke konvertere dersom antall karakterer i tekstfeltet ikke går opp i 8?

 

Funksjonen:

Public Function BinaryToText(ByVal BinaryText As String) As String

Dim Characters As String = Regex.Replace(BinaryText, "[^01]", "")
Dim ByteArray((Characters.Length / 8) - 1) As Byte

For Index As Integer = 0 To ByteArray.Length - 1
	ByteArray(Index) = Convert.ToByte(Characters.Substring(Index * 8, 8), 2)
Next
Return ASCIIEncoding.ASCII.GetString(ByteArray)

End Function

Endret av lefsaker
Lenke til kommentar
Videoannonse
Annonse

Du kan legger en IF rundt der du kaller funksjonen som sjekker om tallet er delelig på 8 før du kaller funksjonen.

 

Altså:

if (cint(tekstfelt.lenght / 8) - (tekstfelt.lenght/8)) = 0 then
  BinaryToText(tekstfelt)
end if

 

Eventuelt legge den samme testen inn i funksjonen din (Altså en ifsetning rundt som forhindrer at funksjonen kjører med mindre strengen er delelig på 8)

 

Håper det var forståelig :p

Lenke til kommentar

If textfelt.Text.Length Mod 8 = 0 Then
 BinarytoText(textfelt.Text)
End If

 

Modulus operatøren mod gir tilbake rest etter en deleoperasjon. Hvis denne er null vil tallet være delelig på åtte.

 

Det er også mulig å bruke bitoperasjoner

 

If (tekstfelt.Text.Length And 7) = 0 Then
 BinaryToText(tekstfelt.Text)
End If

 

I denne sammenhegnen sjekker vi om de tre første bitene er satt til null, så lenge de er det, er tallet delelig på åtte.

Endret av GeirGrusom
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...