[C#] Convert STRING to HEX?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
Ik zit met een kleine uitdaging die ik even niet zie.Ik ben geen programmeur en heb een zetje nodig in de juiste richting.

Ik wil berekeningen doen met HEX. Dus 1C + A = 26h. Nu moet de A als input worden geleverd door middel van een textbox. Dit is een string. Als ik nou een berekening wil doen dan moet ik de string omzetten naar INT. Hier heb ik een probleem. De A moet in HEX A blijven en niet worden omgezet.

Hoe doe ik dit? :)

Probleem zit het hem in de volgende regel:
int Outcome03 = Outcome02 + Convert.ToInt32(hexOutput);

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            string input = "1";

            int Value01 = 0x668;
            int Value02 = 0x11;
            int Value03 = 0x1C;
            int i = 0x1;

            char[] values = input.ToCharArray();
            foreach (char letter in values)
            {
                int Outcome01 = Value01 - Value02;
                int Outcome02 = Value03 * i;
                int value = Convert.ToInt32(letter);
                string hexOutput = String.Format("{0:X}", value);

                int Outcome03 = Outcome02 + Convert.ToInt32(hexOutput);
                int Outcome04 = Outcome03 * Outcome01;
                i++;
            }

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

http://bytes.com/topic/c-...t-hex-string-into-integer

Drie seconden googlen zonder serieuze C#-ervaring.

(En hex is geen afkorting van meerdere woorden, int idem. Geen hoofdletters nodig dus.)


Overigens: een getal is een getal. Hexadecimaal of niet is slechts een representatie daarvan. Dus wat je doet is je converteert je hexadecimale input naar int, doet je berekening ermee, en daarna laat je het resultaat zien. Dat kun je doen als decimaal (base 10), octal (base 8) of hexadecimaal (base 16). Dat maakt allemaal niet uit want het is slechts een andere representatie van hetzelfde getal.

[ Voor 47% gewijzigd door CyBeR op 06-08-2012 13:28 ]

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
CyBeR schreef op maandag 06 augustus 2012 @ 13:25:
http://bytes.com/topic/c-...t-hex-string-into-integer

Drie seconden googlen zonder serieuze C#-ervaring.

(En hex is geen afkorting van meerdere woorden, int idem. Geen hoofdletters nodig dus.)
Leuk dat je wil helpen, maar ik vind je aardig bijdehand.

HEX en INT is WEL een afkorting. De uitkomst van het voorbeeld wat jij in 3 seconde hebt gevonden is 268593840 en de input is 0010026AB0. Dit is dus JUIST mijn probleem.

0010026AB0 als string zou 0010026AB0 moeten blijven in HEX.

Acties:
  • 0 Henk 'm!

  • YakuzA
  • Registratie: Maart 2001
  • Niet online

YakuzA

Wat denk je nou zelluf hey :X

Hier de MSDN pagina over conversies van int en hex etc:
MSDN: How to: Convert Between Hexadecimal Strings and Numeric Types (C# Programming Guide)

Verder is het makkelijker als je de input parsed naar een int, vervolgens optelt en daarna het resultaat als hex weergeeft.

Death smiles at us all, all a man can do is smile back.
PSN


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Squ1zZy schreef op maandag 06 augustus 2012 @ 13:29:
[...]


Leuk dat je wil helpen, maar ik vind je aardig bijdehand.
Dank je.
HEX en INT is WEL een afkorting.
Ja, van hexadecimaal en integer. Wat we dus niet met hoofdletters schrijven omdat 't geen afkortingen zijn van meerdere woorden.
De uitkomst van het voorbeeld wat jij in 3 seconde hebt gevonden is 268593840 en de input is 0010026AB0. Dit is dus JUIST mijn probleem.
Nee, dat is niet je probleem. Converteer 268593840 maar eens naar hex: 0x10026AB0.
0010026AB0 als string zou 0010026AB0 moeten blijven in HEX.
Nee. Je snapt nog niet hoe het werkt. Er is niet zoiets als een "hex". Er is alleen een getal.

0x10026AB0 (b16) = 268593840 (b10) = 02000465260 (b8) = 10000000000100110101010110000 (b2).

Allemaal hetzelfde getal.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
CyBeR schreef op maandag 06 augustus 2012 @ 13:40:
[...]


Dank je.


[...]


Ja, van hexadecimaal en integer. Wat we dus niet met hoofdletters schrijven omdat 't geen afkortingen zijn van meerdere woorden.


[...]


Nee, dat is niet je probleem. Converteer 268593840 maar eens naar hex: 0x10026AB0.


[...]


Nee. Je snapt nog niet hoe het werkt. Er is niet zoiets als een "hex". Er is alleen een getal.

0x10026AB0 (b16) = 268593840 (b10) = 02000465260 (b8) = 10000000000100110101010110000 (b2).

Allemaal hetzelfde getal.
Ja, je hebt gelijk. Misschien moet ik niets converteren naar hex en alles berekenen en op het laatst het omzetten. Zoiets dus:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            string input = "1";

            int Value01 = 1640; // 668
            int Value02 = 17; // 11
            int Value03 = 28; // 1C
            int loop = 1;

            char[] array = input.ToCharArray();
            for (int i = 0; i < array.Length; i++)
            {
                int Uitkomst01 = Value01 - Value02;
                int Uitkomst02 = Value03 * loop;
                int Uitkomst03 = Uitkomst02 + array[i];
                int Uitkomst04 = Uitkomst03 * Uitkomst01;
                MessageBox.Show(Uitkomst04.ToString());
            }


Nu allen nog even uitzoeken hoe ik de messagbox werkend krijg buiten me loop :P
Thanks CyBeR en YakuzA!

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Squ1zZy schreef op maandag 06 augustus 2012 @ 13:44:
[...]


Ja, je hebt gelijk. Misschien moet ik niets converteren naar hex en alles berekenen en op het laatst het omzetten.
Juist. Je zet wat je invoer is (kan een hexadecimale string zijn) om naar een int, en dan ga je ermee doen wat je moet doen, en als je ermee klaar bent en je wilt er weer een hexadecimaal getal uit, laat je je int formatten als hex. Je computer zelf rekent alleen in binair overigens, dus weergeven als decimaal of hex is voor dat ding ruwweg hetzelfde.

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
CyBeR schreef op maandag 06 augustus 2012 @ 13:49:
[...]


Juist. Je zet wat je invoer is (kan een hexadecimale string zijn) om naar een int, en dan ga je ermee doen wat je moet doen, en als je ermee klaar bent en je wilt er weer een hexadecimaal getal uit, laat je je int formatten als hex. Je computer zelf rekent alleen in binair overigens, dus weergeven als decimaal of hex is voor dat ding ruwweg hetzelfde.
Ik had 3 vaste waardes wat word gegevens als hex, maar die kan ik zelf natuurlijk omzetten naar dec en dan me berekeningen doen. Geen idee waarom ik daar niet eerder op kwam. Het werkt iig :)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22:39

.oisyn

Moderator Devschuur®

Demotivational Speaker

Squ1zZy schreef op maandag 06 augustus 2012 @ 13:50:
Ik had 3 vaste waardes wat word gegevens als hex, maar die kan ik zelf natuurlijk omzetten naar dec
Waarom zet je die om naar dec dan? En waarom zijn die vaste waardes überhaupt strings?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
.oisyn schreef op maandag 06 augustus 2012 @ 14:06:
[...]

Waarom zet je die om naar dec dan? En waarom zijn die vaste waardes überhaupt strings?
Idd, waarom niet gewoon als (hex) literal?

Voor het converteren van een bepaalde string naar een int zul je dus gebruik moeten maken van de juiste base ( MSDN: Convert.ToInt32 Method (String, Int32) (System) )

Lees ook even de faq over talstelsels door. Programming FAQ - Getallen en talstelsels.

Als je dat goed leest zal je ook zien dat de titel van je topic niet klopt. Je wil immers helemaal geen string naar hex converteren. Je wil een string die een hexidecimale representatie van een getal bevat omzetten naar een getal ( Intern heeft die voor de computer dan weer een binaire representatie )

[ Voor 21% gewijzigd door Woy op 06-08-2012 14:29 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • epic007
  • Registratie: Februari 2004
  • Laatst online: 12-05 11:36
C#:
1
2
3
4
if (Convert.ToInt32("0x10026AB0", 16) == Convert.ToInt32("268593840", 10)) 
{
  Console.WriteLine("Ze zijn hetzelfde")
}
Pagina: 1