Was macht diese Funktion?
-
glauben heißt nicht wissen
-
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
-
@_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.
-
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
-
JavaScript != Java
Aber in diesem Fall ein schöner Hack...
Schönen Abend allerseits gewünscht!
-
der Hack geht auch in Perl und in PHP. Wer schreibt hier eigentlich von wem ab!?
Schönen Sonntag
-
@_ro_ro sagte in Was macht diese Funktion?:
Wer schreibt hier eigentlich von wem ab!?
Immer der, der fragt
Schönen Sonntag!
-
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.
-
-
Vermutlich nur ein weiterer Account von Martin gewesen ...