Bin <-> Hex, selbst coden ?



  • moin,

    ich habe ein kleines Prob, ich muss einen Char-String unbekannter Länge nach einem def. Verfahren in BinCode umwandeln! Das klappt soweit!!
    Dieser BinCode (wobei jedes Char in nen siebenstelligen BinCode umgewandelt wurde) muss dann in einen achtstelligen BinCode umgewandelt werden, wobei dann dieser wiederum in Hex umgewandelt wird!

    Ein Bsp: CharString: Hi

    jetzt wird das H z.B. umgewandelt in 1010110
    und das i ungewandelt in 0010001

    jetzt werden diese beiden BinStrings so achstellig umgewandelt, dass das niederwertigste Bit des zweiten Zeiches (also die 1 des i) höchstwertigstes Bit des H´s wird. Und der Rest des i auch achtstellig gemacht und zwar so, dass das ehemals zweit Bit des i erstes wird und um acht Stellen zu erhalten mit Nullen aufgefüllt wird.

    Also diese Strings entstehen: 11010110 und 00001000

    woweit klappt alles!!

    Und nun müssen aus diesen beiden Bin-Strings Hex-Strings werden!! Und da hab ich nen Pin im Kopf und raff es net!!

    Könnte einer helfen? 😕



  • Du teilst die 8 Bits auf in 2 * 4 Bits.
    Dann kannst du umwandeln.

    0000 - 0
    0001 - 1
    0010 - 2
    0011 - 3
    0100 - 4
    0101 - 5
    0110 - 6
    0111 - 7
    1000 - 8
    1001 - 9
    1010 - A
    1011 - B
    1100 - C
    1101 - D
    1110 - E
    1111 - F

    Oder mach es so:

    char[] hexn="0123456789ABCDEF".toCharArray();
            String testString="Hi";
            String hex="";
            byte[] b=testString.getBytes();
    
            for(int i=1; i<b.length; i++) {
                b[i-1]|=(b[i]&1)<<7;
                b[i]>>=1;
            }
    
            for(int i=0; i<b.length; i++) {
                hex+=hexn[(b[i]&0xFF)>>4];
                hex+=hexn[b[i]&0xF];
            }
    
            System.out.println(hex);
        }
    

    41363610B4B0343610ADB73432B132B933


Anmelden zum Antworten