Was macht diese Funktion?



  • @omggg

    glauben heißt nicht wissen 😉


  • Banned

    Informatiker machen nur selten absolute Aussagen. 😉

    Aber vielleicht sollte ich das einfach mal ausprobieren:

    public class MyClass {
        private static char[] encodeHex(final byte[] data, final int dataOffset, final int dataLen, final char[] toDigits, final char[] out, final int outOffset) {
            // two characters form the hex value.
            for (int i = dataOffset, j = outOffset; i < dataOffset + dataLen; i++) {
                out[j++] = toDigits[(0xF0 & data[i]) >>> 4];
                out[j++] = toDigits[0x0F & data[i]];
            }
            return out;
        }
        public static void main(String args[]) {
          byte[] data = {123};
          int dataOffset = 0;
          int dataLen = data.length;
          char[] toDigits = "0123456789abcdef".toCharArray();
          char[] out = new char[dataLen * 2];
          int outOffset = 0;
          encodeHex(data, dataOffset, dataLen, toDigits, out, outOffset);
    
          System.out.println(new String(out)); // -> 7b
        }
    }
    

    https://www.jdoodle.com/ia/11T6

    @_ro_ro Du hast Dich geirrt, es wandelt in die Hex-Schreibweise um.



  • @omggg sagte in Was macht diese Funktion?:

    Du hast Dich geirrt, es wandelt in die Hex-Schreibweise um.

    Ein Integer ist es dennoch 😉


  • Banned

    @_ro_ro sagte in Was macht diese Funktion?:

    @omggg sagte in Was macht diese Funktion?:

    Du hast Dich geirrt, es wandelt in die Hex-Schreibweise um.

    Ein Integer ist es dennoch 😉

    Eigentlich, ein Zeichen-Array 😉

    Aber ja, im Prinzip ist alles, was um uns herum ist und wir sehen, nur eine Zahl. 😅



  • @omggg

    achja und noch etwas: auch eine integer-Maske liefert den integer-Anteil einer Zahl.

    3.9 & 0xFF ergibt 3.

    Und wie man hex-Strings in Zahlen und umgekehrt umwandelt weiß Du ja jetzt 😉

    mfg


  • Banned

    JavaScript != Java 😉

    Aber in diesem Fall ein schöner Hack...

    Schönen Abend allerseits gewünscht! 🙂



  • @omggg

    der Hack geht auch in Perl und in PHP. Wer schreibt hier eigentlich von wem ab!?

    Schönen Sonntag 😉


  • Banned

    @_ro_ro sagte in Was macht diese Funktion?:

    Wer schreibt hier eigentlich von wem ab!?

    Immer der, der fragt 😁

    Schönen Sonntag!


  • Banned

    In the Hex.encodeHex method, the two lines within the loop:

    out[j++] = toDigits[(0xF0 & data[i]) >>> 4];
    out[j++] = toDigits[0x0F & data[i]];
    
    

    do the following:

    • Convert the upper 4 bits of data[i] to a hexadecimal character and store it in out.

    • ListenpunktConvert the lower 4 bits of data[i] to a hexadecimal character and store it in out.
      A C equivalent would be:

    char hexDigits[] = "0123456789abcdef";
    
    void encodeHex(const unsigned char* data, int dataLen, char* out) {
        for (int i = 0, j = 0; i < dataLen; ++i) {
            out[j++] = hexDigits[(data[i] & 0xF0) >> 4];
            out[j++] = hexDigits[data[i] & 0x0F];
        }
    }
    
    

    This function performs the same conversion from bytes to hexadecimal characters.


  • Banned

    Vermutlich nur ein weiterer Account von Martin gewesen ...


Log in to reply