Squ1zZy schreef op zondag 04 januari 2015 @ 22:55:
Hierbij een voorbeeld:
code:
1
2
3
| int i = 0x1;
int totaalCharacters = textBox1.Text.Length;
totaalSum = totaalCharacters * i; |
Wanneer er 11 characters staan ingevuld in textBox1 dan is de uitkomst Bh. Ik wil echter als uitkomt 11h.
Ik wil dus GEEN conversie van decimaal <> hex.
Die 0x1 doet inderdaad vermoeden dat je het idee hebt dat er een verschil is tussen een 'hexadecimale int' of een 'decimale int'. Dat is niet zo. Sterker nog, een decimale int bestaat niet eens: een int is gewoon een int. Intern houdt een computer dat in binaire representatie bij maar het had net zo goed trinair kunnen zijn als dat praktisch was.
Je doet nu "totaalCharacters * i" waarbij i de waarde 1 heeft, dat vermenigvuldigen doet dus helemaal niks. Ja, 0x1 is gewoon 1. Het betekent alleen dat wat jij daar intypt, als hexadecimaal gelezen moet worden bij het compileren.
Probeer maar eens
C#:
1
2
3
4
5
6
| Console.println(0x1A);
Console.println(0b11010);
Console.println(26);
Console.WriteLine ("Hex: {0:X}", 0x1A);
Console.WriteLine ("Hex: {0:X}", 0b11010);
Console.WriteLine ("Hex: {0:X}", 26); |
Ik ben Java gewend dus corrigeer me maar als ik een syntaxfout maak
Als je een getal print op het scherm gaat er eerst een stukje code aan de slag wat zo'n getal omzet naar een string in decimale representatie, of in een andere representatie als je dat aangeeft. Zolang je geen string hoeft te hebben is het hele decimaal-hexadecimaal-verhaaltje helemaal niet relevant.
Als je als uitkomst 11h wil, wil je dus als uitkomst 17 (decimaal), dat is hetzelfde. Je hebt dan dus een functie nodig die die 11 omrekent naar 17. Zie daarvoor het stukje code dat iemand hierboven gegeven heeft.
[
Voor 13% gewijzigd door
bwerg op 04-01-2015 23:43
]
Heeft geen speciale krachten en is daar erg boos over.