Short nach Long Convert - gibt es eine Übersicht bekannter Kompilerprobleme?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Bluespide.

    Short nach Long Convert - gibt es eine Übersicht bekannter Kompilerprobleme?

    Ja, ich weiß, wer noch VB2010 nutzt ist selbst Schuld.
    Ich habe diese Woche ein interssantes Problem gehabt:

    VB.NET-Quellcode

    1. Dim _s As String = "00FFF70000"
    2. Dim _srt As Short = Convert.ToInt16(_s.Substring(2, 4), 16)
    3. '-> _srt = &HFFFFFFF7
    4. Dim _i As Integer = Convert.ToInt32(_s.Substring(2, 4), 16)
    5. '-> _i = &HFFF7
    6. Dim _l1 as Long = Convert.ToInt64(_srt)
    7. '-> _l1 = &HFFFFFFFFFFFF7
    8. Dim _l2 as Long = Convert.ToInt64(_i)
    9. '-> _l2 = &HFFF7
    10. 'Mit VB2010 funktioniert nachfolgendes also nicht:
    11. Dim _l As Long = Convert.ToInt64(_s.Substring(2, 4), 16)
    12. '-> _l = &HFFF7
    13. 'Mit VB2017 wird alles korrekt konvertiert:
    14. Dim _l As Long = Convert.ToInt64(_s.Substring(2, 4), 16)
    15. '-> _l1 = &HFFFFFFFFFFFF7

    Hat ein bissel gedauert bis ich das Problem erkannt hatte.
    Gibt es irgdendwo eine Auflistung von Problemen die der Kompiler so hat?
    Kannst du deine Ergebnisse auch in normalen Zahlen anzeigen? So dezimal, und mit Vorzeichen?
    Dieses &HF... - Geduddel ist ja auch schon wieder eine Konvertierung, nach String - und Hex-Strings kennen halt keine negativen Zahlen

    Ansonsten fällt mir auf, dass in zeile#15 _l1 (als richtig) angegeben wird, in zeile #12 aber _l (als falsch).
    Am Ende vergleichst du grad Äpfel mit Birnen...

    roepke schrieb:

    Hat ein bissel gedauert bis ich das Problem erkannt hatte.
    Gibt es irgdendwo eine Auflistung von Problemen die der Kompiler so hat?

    Ich kann da jetzt kein Problem erkenne, ich glaube eher du hast das System noch nicht so ganz verstanden und denkst nur, dass es hier ein Problem gibt.
    Zweierkomplement
    Was genau meinst du denn?