C# 位元組陣列位操作
public class BitBuffer
{
private byte[] m_data = null;
private int m_dataLen = 0;
private int m_pos = 0;
public BitBuffer(byte[] data)
{
m_data = data;
m_dataLen = data.Length;
}
public BitBuffer(byte[] data, int len)
{
m_data = data;
m_dataLen = len;
}
public void Skip(int offset)
{
m_pos += offset;
if (m_dataLen * 8 < m_pos)
{
throw new Exception("m_data.Length * 8 < m_offset");
}
}
public int Read(int size, bool noseek = false)
{
int starBytePos = m_pos / 8;
int starBitOffset = m_pos % 8;
int starBitMask = 0;
for (int i = 0; i < 8 - starBitOffset; ++i)
{
starBitMask <<= 1;
starBitMask += 1;
}
int spanByte = (size + 7) / 8;
if (4 < spanByte)
{
throw new Exception("4 < spanByte");
}
int value = 0;
for (int i = 0; i < spanByte; ++i)
{
value <<= 8;
value += m_data[starBytePos + i];
if (0 == i)
{
value &= starBitMask;
}
}
int endBitOffset = (m_pos + size) % 8;
if (0 < endBitOffset)
{
value >>= (8 - endBitOffset);
}
if (!noseek)
{
Skip(size);
}
return value;
}
public byte[] ReadBytes(int size, bool noseek = false)
{
if (size <= 0)
{
return null;
}
byte[] temp = new byte[size / 8];
Array.Copy(m_data, m_pos / 8, temp, 0, size / 8);
if (!noseek)
{
Skip(size);
}
return temp;
}
}
相關文章
- C#位元組陣列與字串轉換C#陣列字串
- 位元組陣列流陣列
- C#結構體和位元組陣列的轉換C#結構體陣列
- java 位元組陣列取反Java陣列
- C# 將Byte[]位元組陣列存入 sqlite 資料庫C#陣列SQLite資料庫
- .NET刪除位元組陣列中的0位元組陣列
- C#位元組陣列byte[]和字串string如何互相轉換C#陣列字串
- AES位元組陣列加密解密流程陣列加密解密
- 關於位元組陣列QByteArray陣列
- java的IO操作:位元組流與字元流操作Java字元
- Java 動態性(4) – 位元組碼操作Java
- Java陣列物件佔用多少個位元組?Java陣列物件
- Linux 核心裡的資料結構——位陣列位陣列宣告體系結構特定的位操作通Linux資料結構陣列
- C#中如何按位元組數擷取字串?C#字串
- C# 返回圖片的位元組流byte[]C#
- c# 主機和網路位元組序的轉換 關於網路位元組序和主機位元組序的轉換C#
- 為什麼使用型別化陣列來進行位元組操作而不是普通的 javascript 數字陣列型別陣列JavaScript
- python以16進位制列印位元組陣列Python陣列
- byte位元組陣列 轉換成double型別陣列型別
- Javascript使用Buffer替代位元組陣列會提升效能JavaScript陣列
- 浮點數(float)線上轉位元組陣列的工具陣列
- 位元組陣列轉浮點數線上轉換器陣列
- ASM位元組碼操作類庫(開啟java語言世界通往位元組碼世界的大門)ASMJava
- ASM位元組碼操作類庫:開啟java語言世界通往位元組碼世界的大門ASMJava
- 開啟java語言世界通往位元組碼世界的大門——ASM位元組碼操作類庫JavaASM
- 位元組流
- C# 檢視序列化的實體位元組數C#
- C#版位元組跳動SDK - SKIT.FlurlHttpClient.ByteDanceC#HTTPclient
- IO流下:位元組流、流操作規律(java基礎)Java
- 點陣圖四位元組對齊問題
- float浮點數線上轉位元組陣列轉換工具陣列
- C# TripleDES NoPadding 時對待加密內容進行補位元組(8個位元組為一個Block)C#padding加密BloC
- 位運算實現整數與位元組陣列轉換陣列
- Java 位元組碼Java
- 理解位元組序
- 位元組對齊
- 位元組碼指令
- 【C/C++】5.位元組對齊和位元組填充C++