C# 代码片段

一、List<byte>和byte[] 转换

方法1:

1Byte[] bytes;     // 复制源 2 3List<Byte> lbyte = new List<Byte>;  // 复制目的

方法2:

1// 迭代 bytes 数组中的内容后添加到 lbyte 中 2foreach( byte b in bytes) 3{ 4    lbyte.Add(b); 5}

方法3:

1byte[] data = GetMyData();   //你的数据 2List<byte> result = data.ToList(); 3//如果是2.0 4//List<byte> result = new List<byte>(data);

二、string类型转成byte[]

byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );

反过来,byte[]转成string:

string str = System.Text.Encoding.Default.GetString ( byteArray );

其它编码方式的,如System.Text.UTF8Encoding,System.Text.UnicodeEncoding class等;例如:

string类型转成ASCII byte[]:("01" 转成 byte[] = new byte[]{ 0x30, 0x31})

byte[] byteArray = System.Text.Encoding.ASCII.GetBytes ( str );

ASCII byte[] 转成string:(byte[] = new byte[]{ 0x30, 0x31} 转成 "01")

string str = System.Text.Encoding.ASCII.GetString ( byteArray );

有时候还有这样一些需求:

byte[] 转成原16进制格式的string,例如0xae00cf, 转换成 "ae00cf";new byte[]{ 0x30, 0x31}转成"3031":

1      public static string ToHexString ( byte[] bytes ) // 0xae00cf => "AE00CF " 2         { 3              string hexString = string.Empty; 4              if ( bytes != null ) 5              { 6                  StringBuilder strB = new StringBuilder (); 7                for ( int i = 0; i < bytes.Length; i++ ) 8                { 9                    strB.Append ( bytes[i].ToString ( "X2" ) ); 10                } 11                hexString = strB.ToString (); 12            } 13            return hexString; 14       }

反过来,16进制格式的string 转成byte[],例如, "ae00cf"转换成0xae00cf,长度缩减一半;"3031" 转成new byte[]{ 0x30, 0x31}:

1        public static byte[] GetBytes(string hexString, out int discarded) 2        { 3            discarded = 0; 4            string newString = ""; 5            char c; 6            // remove all none A-F, 0-9, characters 7            for (int i=0; i<hexString.Length; i++) 8            { 9                c = hexString[i]; 10                if (IsHexDigit(c)) 11                    newString += c; 12                else 13                    discarded++; 14            } 15            // if odd number of characters, discard last character 16            if (newString.Length % 2 != 0) 17            { 18                discarded++; 19                newString = newString.Substring(0, newString.Length-1); 20            } 21            int byteLength = newString.Length / 2; 22            byte[] bytes = new byte[byteLength]; 23            string hex; 24            int j = 0; 25            for (int i=0; i<bytes.Length; i++) 26            { 27                hex = new String(new Char[] {newString[j], newString[j+1]}); 28                bytes[i] = HexToByte(hex); 29                j = j+2; 30            } 31            return bytes; 32        } 33 34        private static byte HexToByte(string hex) 35        { 36            byte tt = byte.Parse(hex, System.Globalization.NumberStyles.HexNumber); 37            return tt; 38        } 39 40        private static byte HexToByte(string hex) 41        { 42            byte tt = byte.Parse(hex, System.Globalization.NumberStyles.HexNumber); 43            return tt; 44        }
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

java8新特性

Stream将List转换为Map,使用Collectors.toMap方法进行转换背景:User类,类中分别有id,name,age三个属性。List集合,userList,存储User对象1、指定keyvalue,value是对象中的某个属性值。 Map<Integer,StringuserMap1userList.str

java将一个byte数组保存成图片存在本地

java将byte数组转换成图片,可以File和IO操作来完成。//byte数组到图片到硬盘上publicvoidbyte2image(bytedata,Stringpath){if(data.length<3||path.equals(""))return;//判断输入的byte是否为空

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

List的Select 和Select().tolist()

List<PersondelpnewList<Person{newPerson{Id1,Name"小明1",Age11,Sign0},newPerson{Id2,Name"小明2",Age12,