8 Bit Zahl nach 7 Bit Hex wandeln

Für allgemeine Fragen zur Programmierung mit PureBasic.
Torakas
Beiträge: 63
Registriert: 13.09.2004 09:56

8 Bit Zahl nach 7 Bit Hex wandeln

Beitrag von Torakas »

Hi Leute,

hat einer vielleicht eine schnelle Lösung um eine 8 Bit Zahl in eine 7 Bit Hex Zahl zu wandeln, wobei die Hexzahl bei >=128 volle 4 Zeichen schreibt und nicht z.B. "1EF" sondern "01EF".

Hat da vielleicht einer eine Lösung für mich. Hab zwar schon etwas geschrieben, aber suche evtl eine elegantere Lösung.

Meine derzeitige Lösung ist die Zahl zu überprüfen ob sie >=128 ist und wenn ja das erste Byte in einen Stringpointer schreiben und von der Zahl dann 128 abziehen.

Wie gesagt wenn jemand was besseres hatte, dann her damit. Danke.

Gruß,
Torakas
aspicza
Beiträge: 11
Registriert: 18.04.2006 07:23
Kontaktdaten:

Beitrag von aspicza »

Hallo!

Verzeihung, aber ich finde Deine Darstellung etwas wirr!

Warum möchtet du das 8. Bit wegschneiden? Der Zahlenwert ändert sich dadurch.

Die größte 8 Bit Zahl ist 255 (dezimal) oder FF (hexadezimal). Wenn Du also ein Bit wegnimmst, dann ist die größte 7-Bit Zahl 127 (dezimal) oder 7f (hexadezimal).

Bis dato habe ich den Eindruck, dass Du einen Gedankenfehler gemacht hast.

Ich habe Dein Problem zumindestens nicht verstanden *sorry*

Bis dann
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Verstehe ich das richtig, dass du eine beliebige Ganzzahl in eine Hexzahl umwandeln willst und zwar immer in Blöcken, die von 0 bis 7F gehen?
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Torakas
Beiträge: 63
Registriert: 13.09.2004 09:56

Beitrag von Torakas »

Sorry,

hab nochmal was nachgeschaut und hab gesehen das er die 8 Bit zahl nicht in 2 Bytes aufteil. Es ist doch ganz anderster.

Wenn eine Zahl >=128 ist dann schreibt er in das erste Byte chr(128 + round(Zahl / 128, 0 (Abrunden)) und dann in das zweite Byte den Rest von Zahl Modulo 128.

Sprich im ersten Byte die anzahl der möglichen x*128 und aus dem zweiten Byte die Zahl plus.

Somit sollte maximal möglich sein von der Zahl her: 127*128+128 = 16384

Sorry für die Verwirrung, aber vielleicht hat ja jemand was gutes dazu wie man das machen koennte ausser wie ich es oben beschrieben hab.

Danke im Voraus.

Gruß,
Torakas

ps. das wird im SNMP Protokoll so gemacht... Ich hab mir das nicht einfallen lassen :?
Antworten