Avatar billede ibrene Nybegynder
08. januar 2003 - 16:40 Der er 22 kommentarer og
1 løsning

bin 2 hex konvertering

Hejsa

Jeg har brug for at konvertere en bin string på 2016 karakter, men når jeg vil gøre dette kommer der i alle de ex som jeg har fundet en overflow.

Nogle som kan fortælle mig, hva jeg evt kan gøre ved dette??
Avatar billede martin_moth Mester
08. januar 2003 - 17:01 #1
Prøv at vis et af de eksempler, der fejler
Avatar billede ibrene Nybegynder
08. januar 2003 - 17:08 #2
Function fncBinToHex(strBin As String) As String
Dim intI As Variant
Dim lngTemp As Variant
    lngTemp = 0
    For intI = 1 To Len(strBin)
      If Mid(strBin, intI, 1) = "1" Then lngTemp = lngTemp + 2 ^ (Len(strBin) - intI)
    Next intI
    fncBinToHex = Hex(lngTemp)
End Function
Avatar billede ibrene Nybegynder
08. januar 2003 - 17:09 #3
den kan ikke klare
lngTemp + 2 ^ (Len(strBin) - intI)
Som til at starte med vil bive
0 + 2 ^ (2016 - 1)
Avatar billede martin_moth Mester
08. januar 2003 - 17:19 #4
Øhh - prøv at kikke lidt på
  lngTemp + 2 ^ (Len(strBin) - intI)

Dvs at du starter i løkken med at forsøge at udregne
  0 + 2^2016

Har du overvejet hvad 2016^2 giver?

Jeg ved ikke hvor mange billiarder cifre der er i sådan et tal - men der er MANGE!!!!!

Ikke så underligt, at du får et overflow!
Avatar billede martin_moth Mester
08. januar 2003 - 17:27 #5
Skrivefejl:
Jeg skrev: "Har du overvejet hvad 2016^2 giver?"
men mente "Har du overvejet hvad 2^2016 giver?"

Hvorom alting er - jeg tror du skal lede længe efter et program eller en lommeregner, der kan håndtere tal af den størrelsesorden!

Spørgsmålet er, om du egentlig vil udregne potenser af den størrelse, eller om der er en fejl i din formel - altså en matematisk fejl, ikke programmeringsmæssig fejl
Avatar billede jespernaur Nybegynder
08. januar 2003 - 17:28 #6
Er det sådan at du har en streng med 2016 nuller og ettaller, og du ønsker denne konverteret til hexadecimale cifre?
Avatar billede ibrene Nybegynder
08. januar 2003 - 17:44 #7
Ført til martin_moth, ja jeg er fuldt ud klar over at det giver et meget stort tal.

Dette er den binær string som skal konverteres:
111010100000000010111111101011111110000000000000001110000000111100000010010100000001011111110100000001111100000000000000000100000000011100000000000000101111111010000000000011111000000010000000001000001010111000001000000101111101000000000000000111110000000111000000011101111111110000010101111111100000000000000000000011110000001110000000111111111111110000101011111111000000000000000000000001110000011110000001111111111111100001010111111111000010000000111000000011100010101110000010111111111111000010101111111110000100000001111000000111111111111100010111111111111110010101011111111110000000000011111000000111111111111000101111111111111100101010111111111100000100000111110000000111111111000000011111111111111001010101111111111100001000000111111000001111111111000010101111111111100010101011111111111100001100000111110000011111111111010000000111111111000101010111111111111000101000001111100000001111111110001010000011111110001010101111111111110001111000000101000000011111111111010101010111111100010101111111111111110111111000000000000000111111111111101010101011111000101010111010101111110111110000000000000101111111111111110101010111010001010100000000011111101111110000000000001011111111111111111010101010001010101010001010101111001111110001010001010111111111111111110101010110010101010101010101011111001111100010101010101111111110101011101010101110101010101010101010111111011111110101011101010111111100010101010101011101010101010101010101011111111011101010111110101011111010101000101010111110101010101010111110111111010001000101111101010111111101010101010101111101010101010111010101111111100011101010111110101011111010101010101011111110101010101010101011111111100101010101111101010101111101010101011111111101010101011111111111111111101010101011111110101011111110101010101011111111111111111111111111111111010101010101111111010101111111010101011111111111111111111111111111111111101010101011111111101010111111111111111111111111111111111111111111111111010101010101111111111111111111111111111111111111111111111111010101010101
Avatar billede driis Nybegynder
08. januar 2003 - 17:52 #8
E1000BF10FE000380F025017F407C00010070002FE800F80802010E0817D0001F01C077FC15FE00000F0380FFFC2BFC0000070781FFF857FC20380E2B82FFF010FF840781FFF17FFE55FF800F81FFE2FFFC10BFF041F01FF01FFF957FF081F83FF010FFE210FFF0C1F07FF407FC55FFE283E03FE283F810BFFC781407FF557F15FFFDF8000FFF1010BE210E10FDF0005FFFD5745401FBF000BFFFE101021010210F3F1457FFFD5655555F3E21010FF10B1010E10101010BF7F5757F1555D55555FEE10F10BE10810BE101010FBF445F57F5557D55757F8E10F10BE101010FE10101010FF955F55F557FD55FFFF1010BF10BF101010FFFFFFFF555FD5FD57FFFFFFFF1010BFE10FFFFFFFFFFFF555FFFFFFFFFFFF555
Avatar billede driis Nybegynder
08. januar 2003 - 17:55 #9
Ovenstående er dit binære tal hexadecimalt. Som de andre skriver, kan VB slet ikke håndtere så store tal. Derfor er løsningen at konvertere streng, der repræsenterer det binære tal til en streng, der repræsenterer tallet hexadecimalt. Jeg ved ikke hvad du skal bruge det til, men så må du jo selv dele den streng du får ud op i mindre bidder, så du kan behandle dataene.

Du laver dit binære tal om til hexadecimal (på strengform) således (f.eks.) :

    Function Bin2Hex(ByVal bin As String) As String
        Dim c, b As String
        Dim i As Integer
        Dim val As Integer

        While Len(bin) > 4
            c = vb.Right(bin, 4)  ' kopier den binære repræsentation af ét hexadecimalt ciffer
            bin = vb.Left(bin, Len(bin) - 4)
            val = 0

            For i = 0 To 3
                b = vb.Right(c, 1)
                c = vb.Left(c, Len(c) - 1)
                If b = "1" Then val = val + 2 ^ i
            Next

            If val > 10 Then
                val = val - 10
                b = Chr(Asc("A") + val)
            Else
                b = CStr(val)
            End If

            Bin2Hex = b + Bin2Hex

        End While

        val = 0
        c = bin
        For i = 0 To Len(c) - 1
            b = vb.Right(c, 1)
            c = vb.Left(c, Len(c) - 1)
            If b = "1" Then val = val + 2 ^ i
        Next
        If val > 10 Then
            val = val - 10
            b = Chr(Asc("A") + val)
        Else
            b = CStr(val)
        End If

        Bin2Hex = b + Bin2Hex

    End Function
Avatar billede driis Nybegynder
08. januar 2003 - 17:57 #10
Funktionen ovenfor er i VB .NET syntaks. Hvis du skal bruge den i VB6 skal du rette "vb.Left" og "vb.Right" til hhv. "Left" og "Right". Hvis det skal bruges i VB .NET, skal du have en
Imports vb = Microsoft.VisualBasic
med på din form.
Avatar billede _just4fun_ Nybegynder
08. januar 2003 - 19:55 #11
ibrene->
ok, så f.eks.
"00000001000000100000010011111111"
skal give
"010204FF"
eller?
Avatar billede ibrene Nybegynder
08. januar 2003 - 20:04 #12
Det skal bruges til at konverter en bmp-file til hex kode og videre sendes ud som en billed SMS besked.
Avatar billede _just4fun_ Nybegynder
08. januar 2003 - 20:09 #13
hehe, hvorforF. Er den så blevet konverteret til en string :-)))
Avatar billede ibrene Nybegynder
09. januar 2003 - 08:59 #14
JA, når du laver en billed besked, så laver du alle sorte celler om til 1 og alle lyse om til 0.

Så for du en matrix på 72*28 bare i en lang string og denne skal laves om til Hex, for at mobil telefonen kan forstå den.
Avatar billede martin_moth Mester
09. januar 2003 - 09:16 #15
Ja, men er du sikker på at det er VÆRDIEN af det 2016-cifrede tal du skal oversætte til hex (som jo er en abnormt stor værdi)?

Skal du ikke i stedet for oversætte det fx. byte for byte eller word for word?

Hvad ved jeg, aner intet om billedbeskedder til SMS, men det lyder meget mystisk i mine ører at du skal bruge VÆRDIEN af et 2016-cifret tal, og ikke blot kan nøjes med at oversætte det fx. byte for byte (252 bytes à 1 ciffer) eller word for word (126 words à 2 cifre) - måske mest naturligt som word, da det hexidecimale talsystem baserer sig på 16...

På den måde bliver det 2016-cifrede binære "tal" oversat til et 252-cifret hexidecimalt "tal"

/Martin
Avatar billede _just4fun_ Nybegynder
09. januar 2003 - 09:16 #16
yup, men det jeg undrede mig over var hvorfor det ikke blev encoded til hex med det samme... for jeg går ud fra du har et eller andet tool til det, men jeg ved jo ikke hvor du egentlig har data fra, så neverming.
Avatar billede martin_moth Mester
09. januar 2003 - 09:17 #17
yup > Tjek vores posting-tider (09:16:14) - vi burde gå til en eller anden form for synkron-sport sammen - hvad siger du til synkronsvømning?
Et sidespring - so sorry :o)
Avatar billede martin_moth Mester
09. januar 2003 - 09:18 #18
just4fun > Ovenstående var til dig - troede lige du hed yup
Avatar billede _just4fun_ Nybegynder
09. januar 2003 - 09:23 #19
ole> naaa, yup var taget :-? Sad og fedtede med den samme tekst som din fra 09:16:14 i går, men kom fra det igen :-)
Avatar billede _just4fun_ Nybegynder
09. januar 2003 - 09:24 #20
martin_m> Hov.. martin ikke ole!
Avatar billede martin_moth Mester
09. januar 2003 - 09:27 #21
just4fun > He he ;o)
ibrene> Nå, ibrene, har du kommentarer til min kommentar 09:16:14
Avatar billede martin_moth Mester
09. januar 2003 - 09:45 #22
Billedert der skulle oversættes:

Kopier nedenstående ind i en texteditor:

  # # ######### #      # #      ###############  #######    ###### #
# # ####### #      # #######    ################# #########  ########
###### #      # ###########    ####### ######### ##### # #  ##### ###
### #    # ###############    #######  #######  #        ##### # #
      #####################    ######  #######              #### # # 
      #######################  #####    ######              #### # # 
      #### #######  #######  ### # #  ##### #            #### # #   
    #### #######    ######            ### #              ## # # #   
    ###########    ######            ### #              ## # # #     
    ##### #####    #######        #######              ## # # #     
    #### ######      #####          #### # #          ### # # #       
    ####  #####    #####          # #######        ### # # #       
  ### # #####    #######        ### # #####      ### # # #         
  ###    ###### # #######          # # # # #      ### # #           
  #      ###############            # # # # #    ### # # #  # # #   
  #    ############# #              # # # #  # ### # # #########   
#      ############ #                # # # # ### # # # # ### # # #   
##      ### # ### # #                # # # #  ## # # # # # # # # #   
##    ### # # # # #        # # #  # # # #  # # # # # # # # # #     
#      # # #  # # #      ### # # # # # #  # # # # # # # # # # #   
  #  # # #    # # #    # # # ### # # #    # # # # # # #    #     
# ### ### #    # # #      # # # # # # #    # # # # # #  # # #     
###  # # #    # # #    # # # # # # #      # # # # # # # # #       
## # # # #    # # # #    # # # # #        # # # # #               
# # # # #      # # #      # # # # # #                               
# # # # # #      # # #      # # # #                                 
# # # # #        # # #                                               
# # # # # #                                                # # # # # #

Bare så vi kan se hvad det skulle forestille ;o)
Avatar billede ibrene Nybegynder
09. januar 2003 - 09:52 #23
Hejsa

Flot billed, ik ;-)

Jeg kan godt se din pointe, men umildbart har jeg fået af vide at jeg skal tage den fulde binær streng og oversætte til en HEX streng. Så derfor er det, det som jeg var ude efter.

Jeg har pt ikke hul igennem til den udbyder som jeg bruger, så jeg kan ikke sige om det virker eller ej, endnu.

mvh
Ibrene
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester