Integer kürzen bzw. auf letzte Zahlen zugreifen
-
Hallo,
gibt es eine fkt. mit der man direkt auf die Zeichen (Zahlen) einer Interger variablen zugreifen kann?Ich hab folgendes Problem:
Ich bekomme eine Hex Adresse im Integer format übergeben, nun will ich diese auswerten. Dazu benötige ich die letzten beiden Zahlen der Int var.Daher die frage gibt es eine fkt mit der man direkt auf diese "Zeichen" zugreifen kann ?? Also sowas wie substr() nur für int.
Ich weiß, dass ich die Int in einen String wandeln kann und dann substr() machen kann um an die Zeichen zu gelangen. Dann muß ich wieder in int wandeln um sie zu vergleichen. Das will ich aber nicht.
-
rechne doch einfach die Variable % 100
Ergebnis liegt zwischen 0 und 99 -> sollten deine letzten 2 Zeichen sein.Oder hab ich falsch verstanden?
-
und was ist wenn die adresse nicht immer gleich lang sein sollte??
-
Wennst du mit "Adresse" meinst die übergebene Adresse und die 2 stellen sind immer hinten dann:
ist es egal. Egal wie groß eine Zahl ist wenn modulo gerechnet wird werden nur zahlen bis maximal der rechten zahl - 1 gezeigt.
wennst du jetzt mit "Adresse" meinst, dass es jetzt nicht 2 stellen sondern 3 angezeigt werden sollen:
= zahl % 1000 (entsprechend wieviele stellen gezeigt werden sollen-> 0er anhängen also is es 10^n)
wenn du jetz sagen wilsd 2 stellen egal an welcher stelle ... z.b bei 123456 die 2. und 3. letzte stelle (=45) dann:
= ((zahl - (zahl%10)) / 10) % 100
also da wird erst von der zahl die einserstellen (zahl%10) abgezogen und dann mit / 10 um 1 platz versetzt. zum schluss noch % 100 un schon hast du 45
-
substr() für int ? schrieb:
gibt es eine fkt. mit der man direkt auf die Zeichen (Zahlen) einer Interger variablen zugreifen kann?
Eine Integer-Variable speichert genau eine Zahl.
substr() für int ? schrieb:
Ich hab folgendes Problem:
Ich bekomme eine Hex Adresse im Integer format übergeben, nun will ich diese auswerten.Eine Integer-Variable speichert genau eine Zahl. Und das tut sie nicht "in irgendeinem Format als Zeichenkette", sondern als Bitmuster (Binärdarstellung). Ob Du nun
int i = 0x111;oder
int i = 273;schreibst, das kommt auf'selbe raus.
substr() für int ? schrieb:
Dazu benötige ich die letzten beiden Zahlen der Int var.
Eine Integer-Variable speichert genau eine Zahl.
Wenn Du wissen willst, welches die letzten beiden Ziffern einer bestimmten Zahlendarstellung ist, kannst Du das über / und %, ggf auch mit >> und & ausrechnen.
Beispielsweise lässt sich die Zahl 123 im 9er-Stellenwertsystem so ausrechnen:
123 / 1 % 9 = 6
123 / 9 % 9 = 4
123 / 81 % 9 = 1
--> 123 = 1 * 81 + 4 * 9 + 6
--> 12310 = 1469kk
-
naja und wenn deine zahl als hexadezimale zahl vorliegt und du die letzte ziffer möchtest teilst du einfach durch 16 und lässt dir den rest geben
rest = addresse % 16;und wenn du das in hexadezimaler form ausgeben möchtest setzt du einfach die ostream flags auf hex
-
Skym0sh0 schrieb:
naja und wenn deine zahl als hexadezimale zahl vorliegt
Eine Integer-Variable speichert genau eine Zahl. Und das tut sie nicht "in irgendeinem Format als Zeichenkette", sondern als Bitmuster (Binärdarstellung).