上一个问题是将两个 Int32 编码为一个 Int64 [ C# - Making one Int64 from two Int32s

问题 :如何将一个 Int64 解码回两个 Int32

最佳答案

这是一个(便宜的)解决方案,适用于两种转换。

[StructLayout(LayoutKind.Explicit)]
public struct UnionInt64Int32 {
    public UnionInt64Int32(Int64 value) {
        Value32H = 0; Value32L = 0;
        Value64 = value;
    }
    public UnionInt64Int32(Int32 value1, Int32 value2) {
        Value64 = 0;
        Value32H = value1; Value32L = value2;
    }
    [FieldOffset(0)] public Int64 Value64;
    [FieldOffset(0)] public Int32 Value32H;
    [FieldOffset(4)] public Int32 Value32L;
}

但是,这有一个明显的缺点,它是不可移植的。 Value32H 和 value32L 将在不同的字节序平台上颠倒。

关于c# - 如何将一个 Int64 解码回两个 Int32?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3616400/

10-14 05:11