Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C#] "&H" vs "0x"

  1. #1

    [C#] "&H" vs "0x"

    Salve a tutti,
    ho un dubbio che mi attanaglia il cervello da due giorni.
    Traduco una costante da VB6 dichiarata in questo modo:
    "Public Const VB_NOME As Long = &H80100069"
    a questo in c#:
    "public const long C__NOME = 0x80100069;"

    ora se controllo i valori scopro che:

    VB_NOME = -2146434967
    C__NOME = +2148532329

    Cosa sbaglio? giuro che mi sta facendo uscire di testa!
    CORROBORANTE
    GLEEEEEERRB!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Le domande relative a C# le trattiamo nel forum dedicato ai linguaggi per il .NET Framework.

    Sposto la discussione.

    Ciao e buona prosecuzione!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3

    Re: [C#] "&H" vs "0x"

    Ho provato ad aprire la calcolatrice di windows in modalita' estesa ed ho inserito il valore decimale, convertendolo successivamente in esadecimale:

    -2146434967 -> FFFFFFFF80100069
    2148532329 -> 80100069

    Qualche attinenza c'e' !!!!
    Non vorrei il primo bit della long venisse utilizzato dal VB6 per capire se il valore e' negativo o positivo e che quindi il limite max per una long in VB6 sia minore di quello gestito da c#.

    E' una supposizione chiaramente.


  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Esattamente.

    Il long di VB e' un 32 bit in complemento a due, ovvero un 32 bit con segno.

    Il long di C# (ma in .NET in genere, anche con VB.NET) e' un 64 bit con segno.

    Puoi dichiararlo con

    const int C__NOME = -2146434967;

  5. #5
    alla fine ho fatto con il complementare, ma quello che non capisco e che ho omesso è che anche il VB.NET usa un long differente dal c#

    sia VB6 che .NET tornano con lo stesso negativo, mentre c# no.
    CORROBORANTE
    GLEEEEEERRB!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    In che senso diverso ?

    C# e VB.NET usano la stessa tipologia di dati, quella del framework ...

  7. #7
    se provi a fare una soluzione con 2 classi, una in vb e una in c# con quelle 2 dichiarazioni, poi mandi in console le costanti vedrai che il risultato sarà differente...
    CORROBORANTE
    GLEEEEEERRB!

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E' la stessa cosa ... in VB devi solo indicare la precisione della costante ... la devi scrivere cosi'

    Public Const VB_NOME As Long = &H80100069&

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.