C# 大小端转换
https://www.cnblogs.com/Jasmine-K/p/7659908.html
使用 BinaryPrimitives类 辅助转换
例如:获取了byte[] bufferSpan的内容,接下来就可以调用 BinaryPrimitives 静态类提供的方法进行转换
uint value = BinaryPrimitives.ReadUInt32BigEndian(bufferSpan);
这个类很丰富,调用方便
使用数组反转的方式转换
public byte[] Big2Little(List<uint> bufferlist)
{
if (bufferlist == null || bufferlist.Count <= 0)
{
return null;
}
uint[] buffers = bufferlist.ToArray();
for(int i=0;i< buffers.Length; i++)
{
//uint 是大端 例如:0x12345678
buffers[i] = BitConverter.ToUInt32(BitConverter.GetBytes(buffers[i]).ToArray(), 0);
//uint 是小端 例如:0x78563412
//buffers[i] = BitConverter.ToUInt32(BitConverter.GetBytes(buffers[i]).Reverse().ToArray(), 0);
}
byte[] datas = new byte[buffers.Length * 4];
Buffer.BlockCopy(buffers, 0, datas, 0, buffers.Length * 4);
return datas;
}
获取和设置byte的某一位
/// <summary>
/// 设置某一位的值
/// </summary>
/// <param name="data"></param>
/// <param name="index">要设置的位, 值从低到高为 1-8</param>
/// <param name="flag">要设置的值 true / false</param>
/// <returns></returns>
public byte Setbit(byte data, int index, bool flag)
{
if (index > 8 && index % 8 != 0)
{
index = index % 8;
}
else if (index > 8 && index % 8 == 0)
{
index = 8;
}
int v = index < 2 ? index : (2 << (index - 2));
return flag ? (byte)(data | v) : (byte)(data & ~v);
}
/// <summary>
/// 获取字节中的指定Bit的值
/// </summary>
/// <param name="frame">字节</param>
/// <param name="index">Bit的索引值(0-7)</param>
/// <returns></returns>
public static int GetBit( byte frame, short index)
{
byte x = 1;
switch (index)
{
case 0: { x = 0x01; } break;
case 1: { x = 0x02; } break;
case 2: { x = 0x04; } break;
case 3: { x = 0x08; } break;
case 4: { x = 0x10; } break;
case 5: { x = 0x20; } break;
case 6: { x = 0x40; } break;
case 7: { x = 0x80; } break;
default: { return 0; }
}
return (frame & x) == x ? 1 : 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧