Hallo,
kann man in Java irgendwie auf ein
Hintergrund: Ich habe ein Algorithmus der als Zustand ein
Anders ausgedrückt, was ist das Java-Äquivalent zu folgendem C#- bzw. JavaScript- bzw. Python-Code?
Danke!
kann man in Java irgendwie auf ein
long[]
-Array als byte[]
zugreifen, ohne die Daten hin und her kopieren zu müssen?Hintergrund: Ich habe ein Algorithmus der als Zustand ein
long[]
-Array benutzt. Die meisten Berechnungsschritte arbeiten dabei direkt auf den long
-Werten, also auf ℤ/n mit n = 2^64. Es gibt aber einen Schritt, wo direkt die einzelnen Bytes modifiziert werden müssen!Anders ausgedrückt, was ist das Java-Äquivalent zu folgendem C#- bzw. JavaScript- bzw. Python-Code?
C#:
long[] array = new long[] { /* ... */ };
fixed (ulong* buffer = array)
{
byte* bytes = (byte*)buffer;
for (int pos = 0; pos < NUHASH_BYTES; ++pos)
{
bytes[pos] = SBOX[bytes[pos]];
}
}
Javascript:
let array = new BigUint64Array ([ /* ... */ ]);
const view = new DataView(array.buffer);
const begin = view.byteOffset, end = begin + view.byteLength;
for (let offset = begin; offset < end; ++offset) {
view.setUint8(offset, SBOX[view.getUint8(offset)]);
}
Python:
array = arr.array('Q', [ ... ])
mem_view = memoryview(array).cast('B')
for i in range(len(view)):
mem_view[i] = SBOX[mem_view[i]]
Danke!
Zuletzt bearbeitet: