Konvertiere ein long in zwei int zum Zweck der Rekonstruktion

8

Ich muss einen Parameter als zwei int-Parameter an einen Telerik-Bericht übergeben, da er keine langen Parameter akzeptieren kann. Was ist der einfachste Weg, um eine lange in zwei Spalten zu teilen und sie zu rekonstruieren, ohne Daten zu verlieren?

    
Keith Adler 02.06.2011, 19:51
quelle

5 Antworten

11

Das Maskieren und Verschieben ist die beste Wahl. long ist garantiert 64 Bit und int 32 Bit, entsprechend der Dokumentation, so dass Sie die Bits in die beiden Ganzzahlen maskieren und dann neu kombinieren können.

Siehe:

%Vor%

Beachten Sie die Verwendung von bitweisen Operationen. Dadurch werden die Probleme vermieden, die bei der Verwendung von Additions- oder anderen numerischen Operationen auftreten können, die bei Verwendung von negativen Zahlen oder Rundungsfehlern auftreten können.

Beachten Sie, dass Sie int im obigen Code durch uint ersetzen können, wenn Sie in der Lage sind, vorzeichenlose Ganzzahlen zu verwenden (dies ist in dieser Situation immer vorzuziehen, da es viel klarer ist, was mit den Bits passiert).

    
MGwynne 02.06.2011, 20:22
quelle
3

Das Durchführen von Bitmanipulationen in C # kann manchmal schwierig sein, insbesondere wenn es um signierte Werte geht. Sie müssen immer vorzeichenlose Werte verwenden, wenn Sie eine Bit-Manipulation planen. Leider wird es nicht den schönsten Code ergeben.

%Vor%

Wenn Sie eine bessere Möglichkeit haben möchten, dies zu tun, holen Sie sich die rohen Bytes für das Long und holen Sie sich die entsprechenden Integer aus den Bytes. Die Konvertierung in / aus Darstellungen ändert sich nicht sehr.

%Vor%     
Jeff Mercado 02.06.2011 20:47
quelle
2

Für nicht markierte funktioniert das folgende:

%Vor%     
Jan-Peter Vos 02.06.2011 20:30
quelle
2
%Vor%     
red1ynx 02.06.2011 20:08
quelle
1

Das Konvertieren in und aus einer Zeichenfolge wäre viel einfacher als das Konvertieren von zwei und aus einem Paar von Ints. Ist das eine Option?

%Vor%     
Michael Ames 02.06.2011 20:30
quelle

Tags und Links