IOPortAccess

  • Themenstarter IOPortAcces Hex
  • Beginndatum
I

IOPortAcces Hex

Gast
Hi,
vielleicht kennst du die Klasse IOPortAccess? Wenn nicht ist auch nicht schlimm. Hier geht es eher um Typecasts.

IOPortAccess io= new IOPortAccess();
io.writePort(0x278,0x80);

So wird es gemacht. Wenn ich die 0x80 =[1000.0000] auf einen Port schreibe, muss ich es in einer Hexzahl (0xFE oder 0x80) angeben. Dabei wird das höchstwertige Bit auf 1 gesetzt.

Meine Frage: Wenn ich jetzt nicht "0x08" direkt reinschreiben will, sondern einen Umweg gehen muss wie:
wie schreibe ich die Dezimalzahl (2^7) als Hex-Zahl rein?

String j=Integer.toHexString((int) Math.pow(2, 7));
Integer i = new Integer(j);
io.writePort(0x278,i); ... eigentlich ist es ja jetzt ein Int-Wert und somit nicht richtig, oder?
Der Int-Wert wird bei System.out.println(i) mit 80 ausgegeben;
Das heißt ja, ich schreibe sozusagen:io.writePort(0x278, 80); und nicht 0x80 .... und das macht doch bestimmt nen Unterschied.
 
I

IOPortAccess

Gast
Hi, danke für die Antwort!
wenn man es so macht:
Java:
String j=Integer.toHexString((int) Math.pow(2, 7));
Integer i = Integer.valueOf(j, 16);
System.out.println(i);   
System.out.println(0x80);
System.out.println(128);
IOPortAccess io = new IOPortAccess();
io.writePort(0x190, io.readPort(0x180)|i);

gibt java aber drei mal "128" aus. Wie überprüfe ich denn jetzt, in welchem Format das Ganze geschrieben ist?
Ich brauch ja die Variante mit dem "0x80". Ich weiß, dass es mit valueOf(..) in die hexadezimalschreibweise konvertiert werden sollte ..
aber da es ja den typ Integer hat, wurde es ja vielleicht wieder zurückkonvertiert nach int.
Jdenfalls wollte ich das ganze nochmal überprüfen, wenn es geht.
 

faetzminator

Gesperrter Benutzer
Variante? [...] konvertiert werden sollte? ...? 0x80 != 128?
Ich sehe dein Problem nicht. 0x80 ist 128. Das "Format" ist irrelevant, da der Wert gar nirgends mehr hardcodiert wurde im Code. 0x80 ist in diesem Zusammenhang höchstens lesbarer als 128.
 

Oben