Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Decimaal naar hexadecimaal  (gelezen 9600 keer)

0 leden en 1 gast bekijken dit topic.

Offline pep

  • Lid
  • *
  • Berichten: 79
  • Oplossing.be
Decimaal naar hexadecimaal
« Gepost op: 05 september 2007, 21:44:50 »
Hallo,
Weet iemand een oplossing voor volgend probleem?
Ik moet namelijk massa's decimale getallen naar hexadecimaal omrekenen. Op zich geen probleem leek me. Excel voorziet hiervoor zelfs een functie. Alleen, het gaat over decimale getallen van 28 cijfers!
Blijkt dat excel alle getallen langer dan 15 cijfers  achteraan aanvult met nullen.
Ook via VBA een functie schrijven die deze berekening doet is me niet gelukt. 28 cijfers blijkt voor alles wat ik probeer te lang te zijn.
Iemand een idee? Alvast bij voorbaat bedankt voor het hersenbreken. ???
Pep
win xp home, P4-2.6 , 512Mb , nvidia4 mx 440, cdrw, dvd, 60GB, 17"TFT, telenet

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Decimaal naar hexadecimaal
« Reactie #1 Gepost op: 05 september 2007, 23:35:52 »
Pep, wat moet iemand met een getal dat groter is dan 15 karakters? ??? Ik zou niet eens weten hoe je dat dan moet uitspreken... ;D ;D
Je kan Excel wel 'om de tuin leiden' door een apostrophe voor het getal te plaatsen. Je maakt dan een textstring van het getal en dan zou je het kunnen omzetten naar HEX dmv VBA....

Ik zal morgenavond ff hiermee gaan stoeien (leuk!).

Groet, Leo
______________________________

Groet, Leo

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Decimaal naar hexadecimaal
« Reactie #2 Gepost op: 06 september 2007, 20:35:19 »
Pep, Helaas... Zelfs VBA staat het inderdaad niet toe om zo'n groot getal te gebruiken...Sub Hexadecimaal()

Const Getal = 1.23456789012346E+27

End Sub
Na het intikken (en het geven van een 'enter') van het megagetal 1234567890123456789012345678 veranderde het direct in Excel's machtsnotatie.

De worksheetfunctie Dec2Hex kan converteren tot 13 karakters, daarna gaat het ook fout (error melding).

Dit lijntje houdt dus voor wat mij betreft op.  :'(

Puur uit nieuwsgierigheid... Waar heb je dit voor nodig?  ???

Groet, Leo
______________________________

Groet, Leo

Offline pep

  • Lid
  • *
  • Berichten: 79
  • Oplossing.be
Re: Decimaal naar hexadecimaal
« Reactie #3 Gepost op: 06 september 2007, 21:31:38 »
Beste RedHead,
alvast heel hard bedankt voor de poging.
Het is inderdaad een getal dat niet uit te spreken valt, ik heb er al verschillende keren mijn tong over verstuikt  ;D
Het gaat in feite over EAN128 barcodenummer dat in een UHF-Rfid chip zouden moeten komen. Dus die chip zit in een etiket met daarop de barcode. Nu is het zo dat zo'n chip tot 96bits beperkt is en je er dus zo geen lang nummer in kwijt geraakt. Door het eerst naar Hexadecimaal om te zetten is er wel een manier. Vandaar. Ik weet dat dit nog op deze manier gedaan wordt, maar hoe ze die codes omzetten, daar heb ik het raden naar. Er zijn vandaag nog 4 mensen geweest die het 'even' gingen uitrekenen :), maar die zijn op dezelfde problemen gestrand als jij en ik. Dus laat ons dat nu geen schande noemen dat het niet uitgerekend geraakt.
Nogmaals, welbedankt voor de hulp;
Greetzz,
Pep
win xp home, P4-2.6 , 512Mb , nvidia4 mx 440, cdrw, dvd, 60GB, 17"TFT, telenet

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Decimaal naar hexadecimaal
« Reactie #4 Gepost op: 06 september 2007, 22:50:24 »
Pep,
Citaat
alvast heel hard bedankt voor de poging
Héél graag gedaan! Dit vind ik altijd leuke 'klusjes'. Alleen jammer dat het niet lukte. Ik zat nog ff te denken of Access wellicht grotere getallen aankan... Hmmm... Neueueue, denk 't toch niet! ;D

Voor diegene die het leuk vinden, heb ik nog in VBA de code geschreven die een decimaalgetal omzet naar een hexadecimaalgetal. Met in de lus een messagebox die je de status van iedere stap laat zien. Niet nuttig, wél leuk! ;D ;D'code door Leo Meijer voor Oplossing.BE - 06/07/2007
Sub Hexadecimaal()
Dim Uitkomst, Getal
Dim iRest As Integer
Dim sConv As String, sHexa As String

Getal = 10950 '1.23456789012346E+27

    If IsEmpty(Getal) Then Exit Sub
       
    Application.ScreenUpdating = False
       
    Do While Getal > 0
        Uitkomst = WorksheetFunction.RoundDown(Getal / 16, 0)
        iRest = Getal - (Uitkomst * 16)
        sConv = Choose(iRest + 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F")
        sHexa = sConv & sHexa
   
        'leuk om te zien hoe een decimaal naar een hexadecimaal wordt omgezet...
        MsgBox "Getal...................... = " & Getal & Chr(13) & _
                "Uitkomst.................. = " & Uitkomst & "   (= rounddown(Getal : 16))" & Chr(13) & _
                "Rest....................... = " & iRest & "   (= Getal - (Uitkomst x 16))" & Chr(13) & _
                "Rest in hexadecimaal... = " & sConv & Chr(13) & _
                "Opbouw hex.-waarde.. = " & sHexa, vbOKOnly, "Voortgang..."
       
        Getal = Uitkomst
    Loop

    MsgBox "Eindresultaat = " & sHexa, vbOKOnly, "Einde..."

    Application.ScreenUpdating = True

End Sub

Groet, Leo
______________________________

Groet, Leo

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Re: Decimaal naar hexadecimaal
« Reactie #5 Gepost op: 23 september 2007, 21:09:15 »
Ik krijg in access dit als eindresultaat:

Getal:
1234567890123456789012345678

Resultaat op het einde:

40336777777748000000000

Getal:

1.23456789012346E+27

Resultaat op het einde:

17111110006600000000000000000000000


Diezel
OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Decimaal naar hexadecimaal
« Reactie #6 Gepost op: 23 september 2007, 22:38:19 »
Diezel, dank voor het nakijken in Access. Mijn vermoeden is hiermee dus bevestigd. Óók Access stopt bij 15 cijfers om het getal daarna aan te vullen met nullen...

Groet, Leo
______________________________

Groet, Leo

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Re: Decimaal naar hexadecimaal
« Reactie #7 Gepost op: 23 september 2007, 23:44:32 »
Wat is hier mis mee om de binaire waarde te bepalen?

Option Compare Database
Option Explicit
Private Sub test_Click()
Dim Uitkomst, Getal As Integer
Dim iRest As Integer
Dim sConv As String, sBin As String

Getal = 2315

    If IsEmpty(Getal) Then Exit Sub
     
    Do While Getal
  On Error Resume Next
   
        Uitkomst = Round(Getal / 2, 0)
        iRest = Getal - (Uitkomst * 2)
     
        sConv = Choose(iRest + 1, 0, 1)

        sBin = sConv & sBin
    On Error Resume Next
        'leuk om te zien hoe een decimaal naar een binair wordt omgezet...
         MsgBox "Getal............... = " & Getal & Chr(13) & _
                "Uitkomst........ = " & Uitkomst & "   (= round(Getal : 2))" & Chr(13) & _
                "Rest................. = " & iRest & "   (= Getal - (Uitkomst x 2))" & Chr(13) & _
                "Rest in ............ = " & sConv & Chr(13) & _
                "Opbouw bin.-waarde. = " & sBin, vbOKOnly, "Voortgang..."
       
        Getal = Uitkomst
    Loop

    MsgBox "Eindresultaat = " & sConv & sBin, vbOKOnly, "Einde..."
 Debug.Print sConv & sBin
 

End Sub
OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.191
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Decimaal naar hexadecimaal
« Reactie #8 Gepost op: 24 september 2007, 00:56:20 »
Wat er mis is... Geen idéé  ;D

maar mis is het...  8)

Misschien heb je hier iets aan:

2315-2048= 267               1
  267-1024=                      0
  267-  512=                      0
  267-  256=   11               1
    11-  128=                      0
    11-    64=                      0
    11-    32=                      0
    11-    16=                      0
    11-      8=     3               1
      3-      4=                      0
      3-      2=     1               1
      1-      1=     0               1

100100001011 = 2315

:) SoftAid :)       
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Decimaal naar hexadecimaal
« Reactie #9 Gepost op: 24 september 2007, 06:30:53 »
Diezel, wat bedoel je hiermee?
Citaat van: diezel
Wat is hier mis mee om de binaire waarde te bepalen?
Met die code is niets mis. Die heb ik geschreven om te kijken of je via VBA wel langere getallen reeksen kan omzetten (als antwoord op de vraag van de TS) omdat de sheet-functie HEX bleef steken op 15 cijfers en daarna op nullen overging.
Helaas is dat niet zo. Een echt getal wordt in de MS-pakketten dus óf omgezet naar zo'n verkorte notatie ('1.23456789012346E+27), óf wordt na het 15e cijfer aangevuld met nullen.

Als je met je vraag vraagt om een code die een decimaal omzet naar een binair waarde, kan ik je ook helpen. Die heb ik lang geleden ook 'ns geschreven (moet ik wel ff goed zoeken). Dus als dat zo is, moet je maar een gil geven.

Groet, Leo

______________________________

Groet, Leo

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Re: Decimaal naar hexadecimaal
« Reactie #10 Gepost op: 24 september 2007, 07:09:53 »
Aan de code van jou is inderdaad niets verkeerd mee.
wat dec naar hex betreft.


Ik zag een eventuele mogelijkheid om de code om te vormen om een decimaal getal om te zetten naar binair.
en daar loopt het niet juist

Van dec naar binair heb ik ondertussen een oplossing.

Maar hoe kan je dan terug converteren van binair naar dec ?

Diezel
OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Decimaal naar hexadecimaal
« Reactie #11 Gepost op: 24 september 2007, 07:35:29 »
Diezel,
Citaat
Aan de code van jou is inderdaad niets verkeerd mee.
wat dec naar hex betreft.
Ok, vanochtend om ff over zes nog niet zo helder denkend! ;D Ik had niet gezien dat je de code had aangepast. Sorry.

Ik duik vananvond ff de archieven voor je in. Ook die code heb ik voor je. 'Dan kan je zien wat ik er ooit van gemaakt heb.
Bij de weg'... Excel heeft al deze functies ook in z'n analyses toolpack: Dec2Bin; Dec2Hec enzovoorts. Maar goed, dan zie je de werking niet... ;D
Vananvond verder dus...

Groet, Leo
______________________________

Groet, Leo

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.191
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Decimaal naar hexadecimaal
« Reactie #12 Gepost op: 24 september 2007, 15:10:33 »
Van dec naar binair heb ik ondertussen een oplossing.
nieuwsgierige ik voor jou oplossing (ik had zelf ook zo wat (beginners-) ideetjes...  ;D)
Citaat
Maar hoe kan je dan terug converteren van binair naar dec ?
Moet ook eenvoudig te doen zijn. Zal er eens over denken... ;D

:) SoftAid :)       

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Re: Decimaal naar hexadecimaal
« Reactie #13 Gepost op: 24 september 2007, 16:29:46 »
Hier is de oplossing om van dec naar bin te gaan:

Het zou mooi zij als er een knopke kan bijgezet worden
om van bin naar dec terug te rekenen. Dit is wel in access gedaan maar dat kan ook in excel gebruikt worden.


Option Compare Database
Option Explicit
Private Sub Knop0_Click()
' zet decimaal getal om naar binair getal

    ' declaraties
    Dim T As Integer
    Dim MaxMacht As Integer
    Dim DecGetal As Integer
    Dim strBin As String
    Dim BinCijfer() As Integer
    Dim txtBin As String
    Dim Antwoord As Long
    ' startwaarden instellen
    strBin = ""
    txtBin = ""
 
   Dim txtDec As Integer
terug:
  Antwoord = InputBox("geef een decimaal getal op")
  txtDec = Antwoord
  If Antwoord = 0 Then GoTo terug

 
   ' lezen en omzetten van decimaal getal
    DecGetal = Val(txtDec)
   
    ' hoogste macht bepalen
    MaxMacht = Int(Log(DecGetal) / Log(2))
    ReDim BinCijfer(MaxMacht)
    DecGetal = DecGetal - 2 ^ MaxMacht
    BinCijfer(MaxMacht) = 1

    ' andere cijfers bepalen
    For T = MaxMacht - 1 To 0 Step -1
         If DecGetal - 2 ^ T < 0 Then
              BinCijfer(T) = 0
         Else
              BinCijfer(T) = 1
              DecGetal = DecGetal - 2 ^ T
         End If
    Next T

    ' tonen van binair getal
    For T = MaxMacht To 0 Step -1
         strBin = strBin & Str(BinCijfer(T))
    Next T
   
    txtBin = strBin
   
   MsgBox "van Dec" & Space(1) & txtDec & vbCrLf & "naar Bin = " & Space(1) & txtBin, vbOKOnly + 0, "Resultaat"
End Sub


Diezel

OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

Offline Konfu

  • Oplosser
  • ****
  • Berichten: 708
  • Geslacht: Man
Re: Decimaal naar hexadecimaal
« Reactie #14 Gepost op: 24 september 2007, 17:25:58 »
Ik ben op jouw voorbeeld een beetje verder gegaan Diezel (wel in Excel) en deze code kan je gebruiken om een binaire waarde om te zetten in een decimale waarde

Sub testing()

Dim txtBinair As String
txtBinair = InputBox("geef een binaire waarde op")
ConverteerBinairNaarDecimaal (txtBinair)
End Sub

Public Function ConverteerBinairNaarDecimaal(txtBinaireWaarde As String) As String
    Dim iDecimaal, temp, i, Lengte
    Lengte = Len(txtBinaireWaarde)
    For i = 0 To Lengte - 1
        temp = CInt(Mid(txtBinaireWaarde, Lengte - i, 1))
        iDecimaal = iDecimaal + (temp * (2 ^ i))
    Next i
    MsgBox iDecimaal
End Function

Als je nog vragen hebt, stel ze maar gerust  8)
P4C800 ASUSTeK Computer Inc., RADEON 9600 XT AGP, Windows XP Pro SP2, Intel Pentium 4 CPU 3.00GHz, 1024 MB RAM, HDD: 320GB, Telenet, Internet Explorer 7.0, Outlook Express

 


www.combell.com