using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class Test
{
class _BitConverter
{
private Byte[] tmpfor_1ByteToInt32 = new Byte[4];
private Byte[] tmpfor_2ByteToInt32 = new Byte[4];
private Byte[] tmpfor_3ByteToInt32 = new Byte[4];
private static Int32 generalToInt32(Byte[] bytes, int bitsCount)
{
Int32 shiftCount = 32 - bitsCount;
UInt32 ui = BitConverter.ToUInt32(bytes, 0);
UInt32 ui2 = ui << shiftCount;
Int32 i = (Int32)(ui2);
Int32 i2 = i >> shiftCount;
return i2;
}
public Int32 C1ByteToInt32(Byte[] bytes, int startIndex)
{
tmpfor_1ByteToInt32[0] = bytes[0 + startIndex];
return generalToInt32(tmpfor_1ByteToInt32, 8);
}
public Int32 C2ByteToInt32(Byte[] bytes, int startIndex)
{
tmpfor_2ByteToInt32[0] = bytes[0 + startIndex];
tmpfor_2ByteToInt32[1] = bytes[1 + startIndex];
return generalToInt32(tmpfor_2ByteToInt32, 16);
}
public Int32 C3ByteToInt32(Byte[] bytes, int startIndex)
{
tmpfor_3ByteToInt32[0] = bytes[0 + startIndex];
tmpfor_3ByteToInt32[1] = bytes[1 + startIndex];
tmpfor_3ByteToInt32[2] = bytes[2 + startIndex];
return generalToInt32(tmpfor_3ByteToInt32, 24);
}
}
public static void Main(string[] args)
{
var converter = new _BitConverter();
Console.WriteLine(converter.C1ByteToInt32(new byte[] { 0xCC, 0xCC, 0xFE, 0xFF, 0x80 }, 3));
Console.WriteLine(converter.C2ByteToInt32(new byte[] { 0xCC, 0xCC, 0xFE, 0xFF, 0x80 }, 2));
Console.WriteLine(converter.C3ByteToInt32(new byte[] { 0xCC, 0xCC, 0xFE, 0xFF, 0x80 }, 2));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0OwoKcHVibGljIGNsYXNzIFRlc3QKewogICAgICAgIGNsYXNzIF9CaXRDb252ZXJ0ZXIKICAgICAgICB7CiAgICAgICAgICAgIHByaXZhdGUgQnl0ZVtdIHRtcGZvcl8xQnl0ZVRvSW50MzIgPSBuZXcgQnl0ZVs0XTsKICAgICAgICAgICAgcHJpdmF0ZSBCeXRlW10gdG1wZm9yXzJCeXRlVG9JbnQzMiA9IG5ldyBCeXRlWzRdOwogICAgICAgICAgICBwcml2YXRlIEJ5dGVbXSB0bXBmb3JfM0J5dGVUb0ludDMyID0gbmV3IEJ5dGVbNF07CgogICAgICAgICAgICBwcml2YXRlIHN0YXRpYyBJbnQzMiBnZW5lcmFsVG9JbnQzMihCeXRlW10gYnl0ZXMsIGludCBiaXRzQ291bnQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEludDMyIHNoaWZ0Q291bnQgPSAzMiAtIGJpdHNDb3VudDsKCiAgICAgICAgICAgICAgICBVSW50MzIgdWkgPSBCaXRDb252ZXJ0ZXIuVG9VSW50MzIoYnl0ZXMsIDApOwogICAgICAgICAgICAgICAgVUludDMyIHVpMiA9IHVpIDw8IHNoaWZ0Q291bnQ7CiAgICAgICAgICAgICAgICBJbnQzMiBpID0gKEludDMyKSh1aTIpOwogICAgICAgICAgICAgICAgSW50MzIgaTIgPSBpID4+IHNoaWZ0Q291bnQ7CiAgICAgICAgICAgICAgICByZXR1cm4gaTI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1YmxpYyBJbnQzMiBDMUJ5dGVUb0ludDMyKEJ5dGVbXSBieXRlcywgaW50IHN0YXJ0SW5kZXgpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRtcGZvcl8xQnl0ZVRvSW50MzJbMF0gPSBieXRlc1swICsgc3RhcnRJbmRleF07CiAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhbFRvSW50MzIodG1wZm9yXzFCeXRlVG9JbnQzMiwgOCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1YmxpYyBJbnQzMiBDMkJ5dGVUb0ludDMyKEJ5dGVbXSBieXRlcywgaW50IHN0YXJ0SW5kZXgpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHRtcGZvcl8yQnl0ZVRvSW50MzJbMF0gPSBieXRlc1swICsgc3RhcnRJbmRleF07CiAgICAgICAgICAgICAgICB0bXBmb3JfMkJ5dGVUb0ludDMyWzFdID0gYnl0ZXNbMSArIHN0YXJ0SW5kZXhdOwogICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYWxUb0ludDMyKHRtcGZvcl8yQnl0ZVRvSW50MzIsIDE2KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVibGljIEludDMyIEMzQnl0ZVRvSW50MzIoQnl0ZVtdIGJ5dGVzLCBpbnQgc3RhcnRJbmRleCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdG1wZm9yXzNCeXRlVG9JbnQzMlswXSA9IGJ5dGVzWzAgKyBzdGFydEluZGV4XTsKICAgICAgICAgICAgICAgIHRtcGZvcl8zQnl0ZVRvSW50MzJbMV0gPSBieXRlc1sxICsgc3RhcnRJbmRleF07CiAgICAgICAgICAgICAgICB0bXBmb3JfM0J5dGVUb0ludDMyWzJdID0gYnl0ZXNbMiArIHN0YXJ0SW5kZXhdOwogICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYWxUb0ludDMyKHRtcGZvcl8zQnl0ZVRvSW50MzIsIDI0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBjb252ZXJ0ZXIgPSBuZXcgX0JpdENvbnZlcnRlcigpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShjb252ZXJ0ZXIuQzFCeXRlVG9JbnQzMihuZXcgYnl0ZVtdIHsgMHhDQywgMHhDQywgMHhGRSwgMHhGRiwgMHg4MCB9LCAzKSk7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKGNvbnZlcnRlci5DMkJ5dGVUb0ludDMyKG5ldyBieXRlW10geyAweENDLCAweENDLCAweEZFLCAweEZGLCAweDgwIH0sIDIpKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoY29udmVydGVyLkMzQnl0ZVRvSW50MzIobmV3IGJ5dGVbXSB7IDB4Q0MsIDB4Q0MsIDB4RkUsIDB4RkYsIDB4ODAgfSwgMikpOwogICAgICAgIH0KfQ==