Ich möchte die niedrigen 32 Bit eines int64 als int32 bekommen

9

Ich habe einen Int64-Wert, aber ich brauche nur die unteren 32 Bits. Daher möchte ich einen schnellen Weg, um den Int32-Wert von den unteren 32 Bits des Int64-Wertes zu erhalten.

Danke

    
qingsong 19.09.2009, 05:04
quelle

5 Antworten

5

Tun Sie etwas wie folgt:

%Vor%

Dies ist vielleicht nicht der kompakteste Weg, um es zu tun, aber es scheint mir am lesbarsten zu sein. Der folgende Code extrahiert die obere Hälfte des Long:

%Vor%     
RCIX 19.09.2009, 05:11
quelle
25

Wenn Sie einem int32-Wert einen int64-Wert zuweisen, führt der Compiler das automatisch für Sie aus  (als Steven Sudit erwähnt):

%Vor%

und weil der Compiler Warnungen anzeigen kann, können Sie den Cast festlegen

%Vor%     
Nick Dandoulakis 19.09.2009 06:08
quelle
9

Sie haben die Sprache nicht angegeben, aber in vielen Fällen müssen Sie sie nur in Int32 umwandeln. Die oberen Bits werden verworfen.

    
Steven Sudit 19.09.2009 05:09
quelle
1

Sie könnten den Compiler die Endian-Ness behandeln lassen und alle Bitverschiebungen, Zeigermanipulationen usw. ausblenden.

%Vor%     
user3564895 10.09.2014 18:03
quelle
-1

In C / C ++ ist der beste Weg (meiner Meinung nach), eine Union zu verwenden. Die folgende Funktion verwendet beispielsweise eine anonyme Union, um die 32 Bits niedrigerer Ordnung aus einer 64-Bit-Ganzzahl zu extrahieren.

%Vor%

Dieser Vereinigungstrick kann für alle Arten von Dingen verwendet werden, wie das Holen der Bits eines Gleitkommawertes in eine ganze Zahl derselben Bitlänge, z. für bitweise Operationen und andere Hacks.

    
Bruno Loff 02.09.2017 14:48
quelle

Tags und Links