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?
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).
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%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%