-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: wie 4 Stellige zahl hex konvertieren?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    360

    wie 4 Stellige zahl hex konvertieren?

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Wie kann ich mit Bascom eine 4 stellige zahl z.B. "1234" auf hexadezimal konvertieren?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    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().

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    360
    1234 entspricht in meinem programm dem hexwert &H1B. variable a=1234 und nach der umwandlung soll variable b dann &h1B sein.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Sorry, ich bin da vielleicht etwas begriffsstutzig.
    Aber was hat a = 1234 mit b = &H1B zu tun?
    Welche Logik steckt dahinter?

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    360
    garnichts. ich brauch einen code der mir 1234 auf hexadezimal umrechnet und das in diesem beispiel der variable b zuweist.

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    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.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    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

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    360
    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

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Dummerweise ist aber Dezimal= 1234 im Hex=4D2
    Und ehrlich gesagt drum was es mir nicht wert ,Deinen ganzen unformatierten Code durchzulesen.
    Gento

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.03.2006
    Beiträge
    360
    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

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •