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
8 Bit Zahl nach 7 Bit Hex wandeln
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
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
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
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
