Ich habe zwei Hex-Strings mit 8 Ziffern. Ich muss für diese zwei hexadezimale Zeichenfolge anwenden und operieren, dann wenden Sie die rechte Verschiebung auf 7 Bits an und erhalten den Dezimalwert. Ich habe versucht, Hex-Strings in Byte-Array der Länge 4 (8 * 2 = 32 Bits = 4 Bytes) zu konvertieren und & Operation zu einzelnen Bytes in der gleichen Reihenfolge, gespeichert das Ergebnis zu einem anderen Byre-Array der Länge 4. Wie Bit Shifting zu tun zu diesem Byte-Array?Rechtsverschiebung in Byte-Array
Ex : data1 in hex: 0x40003019,
data1 in bits: 0100-0000 0000-0000 0011-0000 0001-1001,
data1 in bytes: 64 0 48 25,
data2 in hex: 0x00FFFF80,
data2 in bits : 0000-0000 1111-1111 1111-1111 1000-0000,
data2 in bytes : 0 255 255 128
UND-Operation zwischen data1Bytes, data2Bytes dem Ausgang ergibt: bytearray1 [0,0,48,0] (Bits für diesen 0000-0000 0000-0000 0000-0000 0.011-0.000 und Dezimalwert ist 12.288).
Bis zu diesem Schritt funktionieren alle meine Konvertierungen und Berechnungen wie erwartet. jetzt muss ich 7 Bits dieses Endergebnisses nach rechts verschieben, was 0000-0000 0000-0000 0000-0000 0110-0000 (Dezimalwert von 96) ergeben sollte.
1) Ich habe versucht Bytedatenfeld Umwandeln Verschiebung nach rechts in int und anwenden
var res = BitConverter.ToInt32(bytearray1, 0);
var shift = res >> 7;
aber res = 3145728 (was 12,228 sein sollte) und Shift = 24.576 (was 96 sein sollte)
2) ich habe müde Umwandlung bytearray1 [0,0,48,0] in BitArray aber in Bits resultierenden BitArray in umgekehrter Reihenfolge
var bitArray = new BitArray(bytearray1);
BitArray [0] ... BitArray [19] = false, BitArray [20 ] = bitArray [21] = wahr, bitArray [22] ... bitArray [31] = falsch.
BitArray [0] ----------- [31]: 0000 0000 0000 0000 0000 1100 0000 0000,
Bit Dieses Ergebnis falschen Wert verschiebt. Bitte hilf mir dabei, was mir fehlt?
Sie sagen "Right-Shift", aber Ihr Beispiel Links-Shift von 00110000 bis 01100000. Was ist richtig? Vielleicht müssen Sie einfach '>>' durch '' '' ... ersetzen –
@MatthewWatson Hallo, wenn Sie die letzte Bitdarstellung sehen, habe ich gerade die Bits in Bit-Array nach der Konvertierung von Bytearray1 in BitArray gezeigt. Ich muss mein Endergebnis nach dem Ausführen und der Operation zwischen Bytes nach rechts verschieben. –
Hmm aber du sagst 'jetzt muss ich 7 Bits dieses Endergebnisses nach rechts verschieben, was 0000-0000-0000 0000-0000 ** 0110-0000 **' ergeben sollte, da der vorhergehende Schritt '0000-0000 'hatte 0000-0000 ** 0011-0000 ** 0000-0000', ist eine Linksverschiebung. –