AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hexadezimal < > 8 bits

Ein Thema von stay · begonnen am 29. Mär 2017 · letzter Beitrag vom 2. Apr 2017
Antwort Antwort
stay

Registriert seit: 5. Mär 2017
20 Beiträge
 
#1

Hexadezimal < > 8 bits

  Alt 29. Mär 2017, 19:20
Hallo

ich bin zwar immer noch an meiner GUI dran, muss jedoch nebenbei auch an der Funktion arbeiten.

Ich habe 8 Bits in eine Hexadezimalzahl umgewandelt und umgekehrt, es funktioniert, aber es gefällt mir überhaupt nicht. Würdet ihr euch mal kurz meine 2 Funktionen angucken und mir helfen sie zu verbessern?

Die checkbox ist hierbei als bit zu sehen. die hexadezimal ist immer 2-stellig.

Zitat:
i := 0;
if Bit7.checked = true then i := i +1;
if Bit6.checked = true then i := i +2;
if Bit5.checked = true then i := i +4;
if Bit4.checked = true then i := i +8;
if Bit3.checked = true then i := i +16;
if Bit2.checked = true then i := i +32;
if Bit1.checked = true then i := i +64;
if Bit0.checked = true then i := i +128;
Label1.Caption:='Int-Wert: ' + inttostr(i);
h := 'i2cset -y 1 0X24 0x' + inttohex(i,2);
Zitat:
i := strtoint(string HEX);
if i >= 128 then
begin Bit10.checked := true; i := i-128; end
else Bit10.checked := false;
if i >= 64 then
begin Bit11.checked := true; i := i-64 end
else Bit11.checked := false;
if i >= 32 then
begin Bit12.checked := true; i := i-32 end
else Bit12.checked := false;
if i >= 16 then
begin Bit13.checked := true; i := i-16 end
else Bit13.checked := false;
if i >= 8 then
begin Bit14.checked := true; i := i-8 end
else Bit14.checked := false;
if i >= 4 then
begin Bit15.checked := true; i:= i-4 end
else Bit15.checked := false;
if i >= 2 then
begin Bit16.checked := true; i := i-2 end
else Bit16.checked := false;
if i >= 1 then Bit17.checked := true
else Bit17.checked := false;
Bitte nicht auslachen, mir gefällt es selbst nicht.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#2

AW: Hexadezimal < > 8 bits

  Alt 29. Mär 2017, 19:27
Hilft Dir mein Tutorial weiter? Denn eigentlich brauchst Du doch nur das binäre UND zum Auswerten und das binäre ODER zum Setzen der Bits.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
stay

Registriert seit: 5. Mär 2017
20 Beiträge
 
#3

AW: Hexadezimal < > 8 bits

  Alt 29. Mär 2017, 19:48
Bin mir nicht sicher, werde deinen Link genauer angucken müssen.

Also ich brauche 8 Bits aus verschiedenen Funktionen, die ich dann zusammen setze. oder andersrum.
Kann ich in Lazarus 8 Bits zu einem byte umwandeln? Und dafür müsste ich die Hexadezimal erstmal in byte umwandeln :/

Danke schonmal
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#4

AW: Hexadezimal < > 8 bits

  Alt 29. Mär 2017, 19:50
8 Bits SIND ein Byte, da gibt es nichts umzuwandeln . Ich kann mir aber denken, was Du meinst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
stay

Registriert seit: 5. Mär 2017
20 Beiträge
 
#5

AW: Hexadezimal < > 8 bits

  Alt 29. Mär 2017, 19:56
Also ich brauche 8 Boolean statt ein B01010101 Wert am Ende.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#6

AW: Hexadezimal < > 8 bits

  Alt 29. Mär 2017, 19:57
Und wenn man bedenkt, dass man einen Boolean auch als 0 für false und 1 für true sehen kann, was fällt Dir dann an Deiner "Binärzahl" auf?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

AW: Hexadezimal < > 8 bits

  Alt 30. Mär 2017, 19:47
if Bit7.checked = true then i := i +1;

[...]

Bitte nicht auslachen, mir gefällt es selbst nicht.
Mir auch nicht. Sofort stieß mir "Bit7.checked = true" und ff. auf. Probiere mal aus, was passiert, wenn Du "= true" und ff. wegläßt.
Für i:=i+1 gibt es auch den Inkrementor inc(i).
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz