vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Zahlenkonvertierungssystem 
Autor: Animal21
Datum: 30.06.08 09:57

schöner topicname XD

hallo leute

ich ein schönes system von jmd gefundne, welches eine zeichenfolge (kann aus nummer und oder zeichen gestehen) von einem ins andere zahlensystem umwandelt, also z.b. so:

number: "12"
from: "012345679" (dezimalsystem)
to: "01" (binär)

man könnte aber auch so schreiben:
number: "12"
from "0132456789"
to: "G/!\_j)de9=" (wieder dezimal, nur mit andern zeichen) ...

das ganze war in einer java ähnlichne variante geschrieben, welches dür ein spiel genutzt wird.
ich hab den jenigen gefragt ob ich es verwenden und in vb.net umschreiben darf und er hat zugestimmt.

hier mal das system:

Public Function ConvertNumber(ByVal number As String, ByVal base_alphabet_from _
  As String, _
        ByVal base_alphabet_to As String) As String
 
 
        Dim base_from As Integer = Len(base_alphabet_from)
        Dim base_to As Integer = Len(base_alphabet_to)
        Dim null_from As String = base_alphabet_from.Substring(0, 1)
        Dim new_number As String = ""
        Dim result_division As String
        Dim result_modulo As Integer
        Dim result_div As Integer
        Dim index As Integer
 
        Try
            Do
                index = 0
                result_modulo = base_alphabet_from.IndexOf(number.Substring(0, _
                  1))
                result_division = ""
 
                Do
                    If (result_modulo >= base_to) Then
                        result_div = result_modulo / base_to
                        result_division = result_division + (SubRight( _
                          base_alphabet_from, result_div, result_div + _
                          1)).ToString
                        result_modulo = result_modulo - (result_div * base_to)
                    Else
                        result_division = result_division + null_from
                    End If
                    index = index + 1
 
                    If index >= Len(number) Then
                        Exit Do
                    End If
                    result_modulo = (result_modulo * base_from) + _
                      base_alphabet_from.IndexOf(SubRight(number, index, index _
                      + 1))
 
                Loop
 
                index = 0
 
                Do
                    If index >= Len(result_division) Then
                        Exit Do
                    End If
                    If SubRight(result_division, index, index + 1).ToString _
                      <> null_from Then
                        Exit Do
                    End If
 
                    index = index + 1
                Loop
 
                result_division = SubRight(result_division, index, Len( _
                  result_division))
                new_number = (SubRight(base_alphabet_to, result_modulo, _
                result_modulo + 1)).ToString + new_number
                number = result_division
 
            Loop Until number = ""
        Catch e As Exception
            MsgBox(e.ToString)
        End Try
 
        Return new_number
    End Function
 
Public Function SubRight(ByVal text As String, ByVal start As String, ByVal _
  lange As String) As Integer
 
        Try
            Return text.Substring(start, lange)
        Catch ex As Exception
            Return SubRight(text, start, lange - 1)
        End Try
 
End Function
 
'Aufruf:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        txtnew.Text = ConvertNumber(txtnumber.Text, txtfrom.Text, txtto.Text)
End Sub
mein problem ist, dass die variable result_modulo irgendwann (warum auch immer) negativ wird, und das ganze in meiner function "SubRight" eine endlosschleife auslöst.

SubRight hab ich geschrieben, da bei dem normalen SubString in vb.net ein fehler auftritt, der bei der andern "programmierSprache" nicht existiert, undzwar das wenn die längen angabe bei SubString länger ist, als die noch vorhandenen zeichen.

mfg
ani
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Zahlenkonvertierungssystem762Animal2130.06.08 09:57
Re: Zahlenkonvertierungssystem428Moderatorralf_oop30.06.08 11:34
Re: Zahlenkonvertierungssystem442Animal2130.06.08 11:43

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel