Bits von Byte nach Integer kopieren und rotieren
-
Ich bin gerade dabei, einen Checksum Algorithmus zu implementieren. Dafür lese ich eine Datei in einen String ein. Diesen wandle ich in ein byte Array um. Nun möchte ich, dass von jedem byte die bits in die ersten bits eines int geschrieben und anschließend nach rechts rotiert werden. Die Rotation soll dabei der Position im byte Array entsprechen.
Hier ein Beispiel.
eingelesener String: "ASD"
byte Array: {01000001, 01010011, 01000100}int Array vor der Rotation:
{01000001000000000000000000000000,
01010011000000000000000000000000,
01000100000000000000000000000000}int Array nach der Rotation:
{01000001000000000000000000000000,
00101001100000000000000000000000,
00010001000000000000000000000000}Wie bekomme ich die bits aus einem byte an den Anfang des jeweiligen int?
Und soll ich die Rotation dann so implementieren?
public int rotateRight(int bits, int k) { return (bits >>> k) | (bits << (Integer.SIZE - k)); }
Oder kann man das beim Einfügen in das int Array im gleichen Schritt machen?