String in Integer in Hex

  • VB.NET
  • .NET (FX) 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    String in Integer in Hex

    Guten Abend,

    Ich hab ein kleines Problem, worauf ich iwie nicht auf die Lösung komme.
    Ich würde gerne den String "5355077632" in Integer convertieren und den Integer dann mit "xy = Convert.ToString(LangerStringInInteger, 16)" umwandeln.
    Leider sind meine Lösungsversuche mit TryPrase und in Double stat Integer convertieren fehlgeschlagen -.- (auch direktes umwandeln von dem String in Hex, was eig ja Schwachsinn ist.. gibt mir auch den falschen Wert)
    Kann mir bitte einer helfen ?(

    wenn ich die zahl direkt so reinschreibe:
    "xy = Convert.ToString(5355077632, 16)"
    wandelt es auch perfekt um (Ziel ist: 13f300000),.. nur über die Variable hauts nicht hin bzw scheitert ja schon am convertieren...

    VB.NET-Quellcode

    1. Dim IntegerAusString As Integer
    2. If Integer.TryParse("5355077632", IntegerAusString) Then
    3. MsgBox("In Integer: " & IntegerAusString)
    4. else
    5. 'fehler
    6. end if


    das geht ja nicht.. kann nur in double, dann kann ich aber den Wert nicht mehr in "Convert.ToString(DoubleAusString, 16)" einsetzen
    "Das geht nicht" ist keine aussagekräftige Fehlermeldung. Aber ich weiß schon, wo das Problem liegt. Die Zahl ist größer als Integer.MaxValue.
    Wie groß sind denn die Zahlen, die Du so konvertieren möchtest? Eventuell köntest Du Int64 verwenden (also Int64.TryParse).

    Übrigens: Fahr mal bei der Zeile xy = Convert.ToString(5355077632, 16) mit der Maus über die Zahl. Da wird ein ToolTip aufgehen, wo drin steht
    Long
    Stellt eine 64-Bit Ganzzahl mit Vorzeichen dar.
    (Long ist das VB-Alias von Int64.)
    Dagegen wird "Integer" und "32-Bit" (Integer ist das VB-Alias von Int32) stehen, wenn Du die Zahl kleiner machst.
    Es gibt mehrere Überladungen von Convert.ToString. Die oben stehende ist Convert.ToString(Int64, Int32), und es gibt auch noch Convert.ToString(Int32, Int32). Wenn Du die Zahl als Konstante in den Code schreibst, wird die Überladung verwendet, die am besten passt. Das ist Int32, wenn die Zahl klein genug ist, ansonsten Int64 (und ein Compiler-Fehler, wenn die Zahl auch für Int64 zu groß ist).
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Niko Ortner“ ()

    Bei mir geht es so:

    VB.NET-Quellcode

    1. Dim lng As Long = Long.Parse("5355077632")
    2. MessageBox.Show(Convert.ToString(lng, 16)) 'Du brauchst hier keinen integer sondern Long, da der Integer nicht so groß sein kein (kannst auch einen int64 nehmen)

    Syn0tix schrieb:

    Long und Int64
    ist dasselbe.
    Long ist die VB.NET-Betzeichnung, long ist die C#-Betzeichnung, Int64 ist die .NET-interne Betzeichnung.
    Wenn Du einen numerischen Wert als Hex-Zahl ausgeben willst, geht das auch so:

    VB.NET-Quellcode

    1. Dim lng As Long = 5355077632
    2. MessageBox.Show(lng.ToString("X8")) ' "X4", "x2"
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!