예제 #1
0
        public void ByteSwap_SwapBufferTest()
        {
            byte[] buffer       = new byte[sizeof(ulong)];
            byte[] buffer_bc    = null;
            ulong  value_before = kBeforeValue;
            ulong  value_after  = kAfterValue;

            // UInt64
            ByteSwap.ReplaceBytes(buffer, 0, value_before);
            ByteSwap.SwapInt64(buffer, 0);
            buffer_bc = BitConverter.GetBytes(value_after);
            Assert.IsTrue(buffer_bc.EqualsArray(buffer));

            // UInt32
            value_before >>= 32;
            value_after  >>= 32;
            Array.Clear(buffer, 0, buffer.Length);
            ByteSwap.ReplaceBytes(buffer, 0, (uint)value_before);
            ByteSwap.SwapInt32(buffer, 0);
            buffer_bc = BitConverter.GetBytes((uint)value_after);
            Assert.IsTrue(buffer_bc.EqualsArray(buffer));

            // UInt16
            value_before >>= 16;
            value_after  >>= 16;
            Array.Clear(buffer, 0, buffer.Length);
            ByteSwap.ReplaceBytes(buffer, 0, (ushort)value_before);
            ByteSwap.SwapInt16(buffer, 0);
            buffer_bc = BitConverter.GetBytes((ushort)value_after);
            Assert.IsTrue(buffer_bc.EqualsArray(buffer));

            // UInt40
            value_before = kBeforeValueUInt40;
            value_after  = kAfterValueUInt40;
            Array.Clear(buffer, 0, buffer.Length);
            ByteSwap.ReplaceBytesUInt40(buffer, 0, value_before);
            ByteSwap.SwapInt40(buffer, 0);
            buffer_bc = BitConverter.GetBytes(value_after);
            Assert.IsTrue(buffer_bc.EqualsArray(buffer));

            // UInt24
            value_before = kBeforeValueUInt24;
            value_after  = kAfterValueUInt24;
            Array.Clear(buffer, 0, buffer.Length);
            ByteSwap.ReplaceBytesUInt24(buffer, 0, (uint)value_before);
            ByteSwap.SwapInt24(buffer, 0);
            buffer_bc = BitConverter.GetBytes((uint)value_after);
            Assert.IsTrue(buffer_bc.EqualsArray(buffer));
        }
예제 #2
0
        private static void ReplaceBytes(int bitCount, ulong value, byte[] buffer, ref int bufferIndex)
        {
            switch (bitCount)
            {
            case Bits.kInt16BitCount:
                bufferIndex = ByteSwap.ReplaceBytes(buffer, bufferIndex, unchecked ((ushort)value));
                break;

            case Bits.kInt32BitCount:
                bufferIndex = ByteSwap.ReplaceBytes(buffer, bufferIndex, unchecked ((uint)value));
                break;

            case Bits.kInt64BitCount:
                bufferIndex = ByteSwap.ReplaceBytes(buffer, bufferIndex, unchecked ((ulong)value));
                break;
            }
        }