📄 bits.cs
字号:
namespace NCindy.Buffer
{
using NCindy;
using System;
public static class Bits
{
private const byte BITS_OF_BYTE = 8;
private const int LOW_16BIT_MASK = 0xff;
public static int DecodeInt(AbstractBuffer buffer, int index)
{
byte num;
byte num2;
byte num3;
byte num4;
if (buffer.BigEndian)
{
num = buffer.InternalGet(index);
num2 = buffer.InternalGet(index + 1);
num3 = buffer.InternalGet(index + 2);
num4 = buffer.InternalGet(index + 3);
}
else
{
num = buffer.InternalGet(index + 3);
num2 = buffer.InternalGet(index + 2);
num3 = buffer.InternalGet(index + 1);
num4 = buffer.InternalGet(index);
}
return (((((num & 0xff) << 0x18) | ((num2 & 0xff) << 0x10)) | ((num3 & 0xff) << 8)) | (num4 & 0xff));
}
public static long DecodeLong(AbstractBuffer buffer, int index)
{
byte num;
byte num2;
byte num3;
byte num4;
byte num5;
byte num6;
byte num7;
byte num8;
if (buffer.BigEndian)
{
num = buffer.InternalGet(index);
num2 = buffer.InternalGet(index + 1);
num3 = buffer.InternalGet(index + 2);
num4 = buffer.InternalGet(index + 3);
num5 = buffer.InternalGet(index + 4);
num6 = buffer.InternalGet(index + 5);
num7 = buffer.InternalGet(index + 6);
num8 = buffer.InternalGet(index + 7);
}
else
{
num = buffer.InternalGet(index + 7);
num2 = buffer.InternalGet(index + 6);
num3 = buffer.InternalGet(index + 5);
num4 = buffer.InternalGet(index + 4);
num5 = buffer.InternalGet(index + 3);
num6 = buffer.InternalGet(index + 2);
num7 = buffer.InternalGet(index + 1);
num8 = buffer.InternalGet(index);
}
return (long) (((((((((num & 0xff) << 0x38) | ((num2 & 0xff) << 0x30)) | ((num3 & 0xff) << 40)) | ((num4 & 0xff) << 0x20)) | ((num5 & 0xff) << 0x18)) | ((num6 & 0xff) << 0x10)) | ((num7 & 0xff) << 8)) | (num8 & 0xff));
}
public static short DecodeShort(AbstractBuffer buffer, int index)
{
byte num;
byte num2;
if (buffer.BigEndian)
{
num = buffer.InternalGet(index);
num2 = buffer.InternalGet(index + 1);
}
else
{
num = buffer.InternalGet(index + 1);
num2 = buffer.InternalGet(index);
}
return (short) ((num << 8) | (num2 & 0xff));
}
public static IBuffer EncodeInt(AbstractBuffer buffer, int index, int intValue)
{
byte byteValue;
byte num2;
byte num3;
byte num4;
if (buffer.BigEndian)
{
byteValue = (byte) (intValue >> 0x18);
num2 = (byte) (intValue >> 0x10);
num3 = (byte) (intValue >> 8);
num4 = (byte) intValue;
}
else
{
byteValue = (byte) intValue;
num2 = (byte) (intValue >> 8);
num3 = (byte) (intValue >> 0x10);
num4 = (byte) (intValue >> 0x18);
}
buffer.InternalPut(index, byteValue);
buffer.InternalPut(index + 1, num2);
buffer.InternalPut(index + 2, num3);
buffer.InternalPut(index + 3, num4);
return buffer;
}
public static IBuffer EncodeLong(AbstractBuffer buffer, int index, long longValue)
{
byte byteValue;
byte num2;
byte num3;
byte num4;
byte num5;
byte num6;
byte num7;
byte num8;
if (buffer.BigEndian)
{
byteValue = (byte) (longValue >> 0x38);
num2 = (byte) (longValue >> 0x30);
num3 = (byte) (longValue >> 40);
num4 = (byte) (longValue >> 0x20);
num5 = (byte) (longValue >> 0x18);
num6 = (byte) (longValue >> 0x10);
num7 = (byte) (longValue >> 8);
num8 = (byte) longValue;
}
else
{
byteValue = (byte) longValue;
num2 = (byte) (longValue >> 8);
num3 = (byte) (longValue >> 0x10);
num4 = (byte) (longValue >> 0x18);
num5 = (byte) (longValue >> 0x20);
num6 = (byte) (longValue >> 40);
num7 = (byte) (longValue >> 0x30);
num8 = (byte) (longValue >> 0x38);
}
buffer.InternalPut(index, byteValue);
buffer.InternalPut(index + 1, num2);
buffer.InternalPut(index + 2, num3);
buffer.InternalPut(index + 3, num4);
buffer.InternalPut(index + 4, num5);
buffer.InternalPut(index + 5, num6);
buffer.InternalPut(index + 6, num7);
buffer.InternalPut(index + 7, num8);
return buffer;
}
public static IBuffer EncodeShort(AbstractBuffer buffer, int index, short shortValue)
{
byte byteValue;
byte num2;
if (buffer.BigEndian)
{
byteValue = (byte) (shortValue >> 8);
num2 = (byte) shortValue;
}
else
{
byteValue = (byte) shortValue;
num2 = (byte) (shortValue >> 8);
}
buffer.InternalPut(index, byteValue);
buffer.InternalPut(index + 1, num2);
return buffer;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -