-
-
Erfahrener Benutzer
Begeisterter Techniker
wie 4 Stellige zahl hex konvertieren?
Wie kann ich mit Bascom eine 4 stellige zahl z.B. "1234" auf hexadezimal konvertieren?
-
Erfahrener Benutzer
Roboter Genie
Hallo,
meinst du für die Ausgabe in einen String umwandeln oder aus einem String in eine Zahl wandeln? Dafür gibt es die Funktionen Hex() und Hexval().
-
Erfahrener Benutzer
Begeisterter Techniker
1234 entspricht in meinem programm dem hexwert &H1B. variable a=1234 und nach der umwandlung soll variable b dann &h1B sein.
-
Erfahrener Benutzer
Roboter Genie
Sorry, ich bin da vielleicht etwas begriffsstutzig.
Aber was hat a = 1234 mit b = &H1B zu tun?
Welche Logik steckt dahinter?
-
Erfahrener Benutzer
Begeisterter Techniker
garnichts. ich brauch einen code der mir 1234 auf hexadezimal umrechnet und das in diesem beispiel der variable b zuweist.
-
Erfahrener Benutzer
Roboter Genie
Die Dezimalzahl 1234 ist nur eine andere Form der Darstellung des Hexadezimalen Wertes &H4D2 und des binären Wertes 10011010010.
Intern ist alles im Binärformat. Wenn du also eine Variable auf den Wert 1234 setzt, dann ist das der Dezimalwert. Intern wird die Variable auf 10011010010 gesetzt. Wenn du die Variable auf $H4D2 setzt wird sie intern ebenfalls auf 10011010010 gesetzt.
Interessant wird die Darstellung erst, wenn du sie ausgeben willst.
Ich bin mir nicht sicher, ob ich dich richtig verstanden habe.
-
Erfahrener Benutzer
Roboter-Spezialist
Im Grunde rechnet so ein Chip immer Hex.
Nur weil ein Mensch zehn Finger hat wird es 'Menschentauglich' umgerechnet.
Eine Variable ab Byte ist immer Hex.
Dummerweise muß man den dem Chip sagen , rechne mal bitte Hex ins einen Hex String um , statt in zehn Fingersystemstring
Gento
-
Erfahrener Benutzer
Begeisterter Techniker
Ich steuere mit meinem Code einen 868,35Mhz Sender um ELV FS-20 Empfänger anzusteuern. Hierfür muss ich z.B. den Hauscode (im Programm unten als HC1 bezeichnet) "1234" hexadezimal umrechnen. Nachdem ich viele verschiedene Codes schicke und ich auch die Quersumme berechnen muss hätte ich das gerne in eine Formel gepackt die mir das abnimmt.
Mir wurde gesagt, dass ich "1234" für mein programm so umrechnen muss:
Umrechnung: jede Ziffer -1, dann den binären Wert (2 bit) aller 4 Ziffern zusammensetzen, HC 1234 ergibt binär: 00 01 10 11 = hex: 1B
$regfile = "m8def.dat"
$hwstack = 32
$swstack = 10
$framesize = 40
$crystal = 12000000
$baud = 19200
Baud = 19200
Config Portb.1 = Input
Taster Alias Pinb.1
Config Pind.2 = Input
Nirq Alias Pind.2
Config Pind.7 = Output
Fsk Alias Portd.7
Led Alias Portd.5
Config Portd.5 = Output 'LED zur Kontrolle
Dim Count As Byte
Dim Temp As Byte
Dim Cmd(2) As Byte
Dim Par As Byte
Dim Hc1 As Byte
Dim Hc2 As Byte
Dim Ag As Byte
Dim Befehl As Byte
Dim Quersumme As Byte
Hc1 = &H1B
Hc2 = &H1B
Ag = &H50
Befehl = &H12
Quersumme = &HFE
Declare Sub Rf_cmd(byval Tmp As Word) As Word
Declare Sub Parity(byval Par_byte As Byte) As Byte
Declare Sub Send(byval Sendbyte As Byte) As Byte
'config SPI
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 64 , Noss = 0
'Config Spi = Soft , Din = Pinb.4 , Dout = Portb.3 , Ss = Portb.2 , Clock = Portb.5
'init the spi
Spiinit
Waitms 100
Toggle Led
Call Rf_cmd(&Hcc00)
Call Rf_cmd(&H9072) '868MHzband, 12pf, fsk90kHz, 1MHz clock
Call Rf_cmd(&Ha686) '868,35 MHz
'Call Rf_cmd(&Hc811) '19,2 kbit
Call Rf_cmd(&Hc220) 'tx bit sync
Call Rf_cmd(&Hc001) 'TX off
Call Rf_cmd(&Hd240) 'PLL 25%
Call Rf_cmd(&Hbb00) 'OOK on, -9 db
Call Rf_cmd(&He000) 'disable wakeup timer
Do
Bitwait Taster , Set
Toggle Led
Call Rf_cmd(&Hcc00)
Call Rf_cmd(&Hc03
'TX on
Waitms 1
For Count = 1 To 12
Gosub Send_0
Next
Gosub Send_1
Call Send(hc1)
Call Send(hc2)
Call Send(ag)
Call Send(befehl)
Call Send(quersumme)
Gosub Send_0
Call Rf_cmd(&Hc001) 'TX off
Reset Led
Wait 2
Loop
Sub Send(byval Sendbyte As Byte) As Byte
For Count = 0 To 7
Temp = Sendbyte And &H80
If Temp = &H80 Then
Gosub Send_1
Else
Gosub Send_0
End If
Rotate Sendbyte , Left , 1
Next
Call Parity(sendbyte)
End Sub
Sub Parity(byval Par_byte As Byte) As Byte
Par = 0
For Count = 0 To 7
Par = Par Xor Par_byte.count
Next
If Par = 1 Then
Gosub Send_1
Else
Gosub Send_0
End If
End Sub
Send_0:
Set Fsk
Waitus 400
Reset Fsk
Waitus 400
Return
Send_1:
Set Fsk
Waitus 600
Reset Fsk
Waitus 600
Return
Sub Rf_cmd(byval Tmp As Word) As Word
Cmd(2) = Tmp And 255
Shift Tmp , Right , 8
Cmd(1) = Tmp
Spiout Cmd(1) , 2
End Sub
-
Erfahrener Benutzer
Roboter-Spezialist
Dummerweise ist aber Dezimal= 1234 im Hex=4D2
Und ehrlich gesagt drum was es mir nicht wert ,Deinen ganzen unformatierten Code durchzulesen.
Gento
-
Erfahrener Benutzer
Begeisterter Techniker
Hab hier eine Tabelle gegoogelt in der man sieht, dass Binär: 00 01 10 11 hex: 1B ist. Für mich ist das alles noch Neuland. Keine Ahnung wo da der Fehler liegt. http://home.snafu.de/sicpaul/midi/hexbin.htm
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen