C# NETbyte字节数组操作辅助类.docx
- 文档编号:2237171
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:16
- 大小:17.68KB
C# NETbyte字节数组操作辅助类.docx
《C# NETbyte字节数组操作辅助类.docx》由会员分享,可在线阅读,更多相关《C# NETbyte字节数组操作辅助类.docx(16页珍藏版)》请在冰豆网上搜索。
C#NETbyte字节数组操作辅助类
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Globalization;
usingSystem.Text;
namespaceCommons.Format
{
///
///byte字节数组操作辅助类
///
publicstaticclassBytesTools
{
publicstaticreadonlyEncodingGB2312=Encoding.GetEncoding("GB2312");
publicstaticreadonlyEncodingASCII=Encoding.ASCII;
///
///半角转全角函数
///
///
///
publicstaticbyte[]ToSBC(byte[]srcbuff)
{
List
for(inti=0;i { if(srcbuff[i]==0x20) { tmpbuff.Add(0xA1); tmpbuff.Add(0xA1); i+=1; } elseif(srcbuff[i]==0x7E) { tmpbuff.Add(0xA1); tmpbuff.Add(0xAB); i+=1; } elseif(srcbuff[i]>0x80) { tmpbuff.Add(srcbuff[i]); tmpbuff.Add(srcbuff[i+1]); i+=2; } else { tmpbuff.Add(0xA3); tmpbuff.Add((byte)(srcbuff[i]+0x80)); i+=1; } } returntmpbuff.ToArray(); } /// ///从byte[]中截取子串 /// /// /// /// /// internalstaticbyte[]SubBuffer(byte[]srcbuffintstartintlen) { if(srcbuff.Length { thrownewArgumentOutOfRangeException("SubBuffer"); } byte[]retbuff=newbyte[len]; for(inti=0;i { retbuff[i]=srcbuff[i+start]; } returnretbuff; } /// ///将byte[]顺序反转 /// /// /// publicstaticbyte[]SwapBytes(byte[]bytes) { intl=bytes.Length; byte[]Newb=newbyte[l]; for(inti=0;i { Newb[i]=bytes[l-i-1]; } returnNewb; } /// ///获取ushort的高低位反转byte[] /// /// /// internalstaticbyte[]GetSwapBytes(ushortu) { returnSwapBytes(BitConverter.GetBytes(u)); } /// ///获取int的高低位反转byte[] /// /// /// internalstaticbyte[]GetSwapBytes(inti) { returnSwapBytes(BitConverter.GetBytes(i)); } /// ///转义特殊字符,即'~'(0x7E) /// /// /// publicstaticbyte[]SpecCharConvert(byte[]srcbuff) { List foreach(bytebinsrcbuff) { if(b==(byte)'~') { //转义可能出现的~ tmpBuff.Add(0x7D);//之后转义0x7D tmpBuff.Add(0x5E); } elseif(b==0x7D) { //转义0x7D tmpBuff.Add(0x7D); tmpBuff.Add(0x5D); } else { tmpBuff.Add(b); } } returntmpBuff.ToArray(); } /// ///反转义特殊字符,即'~'(0x7E) ///0x7D0x5E->0x7E0x7D0x5D->0x7D /// /// /// publicstaticbyte[]SpecCharReverse(byte[]srcbuff) { List for(inti=0;i { if(srcbuff[i]==0x7D) { if(srcbuff[i+1]==0x5E) { tmpBuff.Add((byte)'~'); } elseif(srcbuff[i+1]==0x5D) { tmpBuff.Add(0x7D); } else { thrownewArgumentException("非法数据"); } i+=2; } else { tmpBuff.Add(srcbuff[i]); i+=1; } } returntmpBuff.ToArray(); } /// ///在srcbuff中查找subbuff第一次出现的位置 /// /// /// /// publicstaticintBufferLookup(byte[]srcbuffbyte[]subbuff) { returnBufferLookup(srcbuffsubbuff0); } /// ///在srcbuff中查找subbuff第一次出现的位置 /// /// /// /// /// publicstaticintBufferLookup(byte[]srcbuffbyte[]subbuffintstart) { for(inti=start;i { for(intj=0;j { if(srcbuff[i+j]! =subbuff[j]) { break; } if(j==subbuff.Length-1) { //能运行到这里表明subbuff中的字节都已经被匹配过 returni; } } } return-1; } /// ///在srcbuff中查找subchars第一次出现的位置 /// /// /// /// publicstaticintBufferLookup(byte[]srcbuffstringsubchars) { returnBufferLookup(srcbuffsubchars0); } /// ///在srcbuff中查找subchars第一次出现的位置 /// /// /// /// /// publicstaticintBufferLookup(byte[]srcbuffstringsubcharsintstart) { byte[]subbuff=Encoding.ASCII.GetBytes(subchars); returnBufferLookup(srcbu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# NET byte字节数组操作辅助类 byte 字节 数组 操作 辅助