C# 常用数据类型转换

1.字符串类型浮点数转float类型

 string strNumber = "71.068";
 float floatNumber =float.Parse(strNumber); //输出floatNumber =71.068

2.浮点数转4个字节(float类型),double默认转8个字节

   float floatNumber = 71.068f;
 byte[] result = BitConverter.GetBytes(floatNumber);//float浮点数默认转为4个字节,double默认转8个字节
//输出结果:D1 22 8E 42
 Array.Reverse(result); //数组元素翻转  42 8E 22 D1

3.int转4个字节 ,short默认转2个字节

byte[] result2 = BitConverter.GetBytes((int)23.5); //将23.5转为int即23  将整形转为字节
 Array.Reverse(result2); //输出结果 00 00 00 17 

4. list集合转数组(一维)

  List<byte> listBytes1 = new List<byte>();
  listBytes1.Add(0x01);
  listBytes1.Add(0x02);
  listBytes1.Add(0x03);
  byte[] result3 = listBytes1.ToArray(); //result3存放的为0x01,0x02,0x03

5.list集合转数组(二维)

   List<byte[]> listBytes1 = new List<byte[]>();
   float floatNumber = 71.068f;
   byte[] result = BitConverter.GetBytes(floatNumber);//float浮点数默认转为4个字节,double默认转8个字节
   //输出结果:D1 22 8E 42
   Array.Reverse(result); //数组元素翻转  42 8E 22 D1
   listBytes1.Add(result);  //添加到集合中去
   byte[] result2 = BitConverter.GetBytes((int)23.5);
   Array.Reverse(result2); //输出结果 00 00 00 17
   listBytes1.Add(result2);  //添加到集合中去
   byte[] result3 = listBytes1.ToArray(); //编译报错,无法转换,因为listBytes1存放着为二维数组
   byte[] result3 = listBytes1.SelectMany(bytes => bytes).ToArray();//正确转换方式 集合转数组 
   //输出结果:42 8E 22 D1 00 00 00 17

6.字节数组16进制显示(原样显示)

   byte[] bytes=new byte[] {0x01,0x03,0xa5,0xbb };
   MessageBox.Show($"字节数组十六进制显示为:{bytes[0].ToString("X2")}-{bytes[1].ToString("X2")}-{bytes[2].ToString("X2")}-{bytes[3].ToString("X2")}?");
//X2表示以16进制显示,并且保留两位,只写X,只保留有效为,比如01,输出为1
输出结果为:01-03-A5-bb       

6.字节数组10进制显示

   byte[] bytes=new byte[] { 0x01, 0x03, 0xa5, 0xbb };
   MessageBox.Show($"字节数组十六进制显示为:{bytes[0]}-{bytes[1]}-{bytes[2]}-{bytes[3]}");
// 输出结果为:  1-3-165-187

7.字节数组翻转

   byte[] bytes=new byte[] { 0x01, 0x03, 0xa5, 0xbb };
   Array.Reverse(bytes); //数组元素翻转
   MessageBox.Show($"字节数组十六进制显示为:{bytes[0].ToString("X2")}-{bytes[1].ToString("X2")}-{bytes[2].ToString("X2")}-{bytes[3].ToString("X2")}");

//输出结果为:bb-a5-03-01

8.将一个整形数据存储到4个字节中,按照由高到低位存储,以及逆运算。

//将32位整形数据转为字节,按照高低位存储
int base_add = 123456789; //整形数据
byte[] bytes = new byte[4];
bytes[0] = (byte)((base_add >> 24) & 0xFF); //最高位
bytes[1] = (byte)((base_add >> 16) & 0xFF); //次高位
bytes[2] = (byte)((base_add >> 8) & 0xFF);  //次低位
bytes[3] = (byte)(base_add & 0xFF);        //最低位


//逆运算 将字节从高位到低位转为32位整形数据
int base_add = (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3];

9.10进制字节数组转为16进制字节数组

 byte[] data = { 21, 22, 23, 24, 25, 26, 27, 28 }; //10进制字节数组
 string[] hexArray = new string[data.Length];

 for (int i = 0; i < data.Length; i++) //先将10进制字节数组转为字符串
 {
     hexArray[i] = data[i].ToString("X2");
 }

 byte[] hexBytes = new byte[hexArray.Length];

 for (int i = 0; i < hexArray.Length; i++) //再将字符串转为16进制
 {
     hexBytes[i] = Convert.ToByte(hexArray[i], 16);
 }
 MessageBox.Show(BitConverter.ToString(hexBytes)); 
 //打印输出:15 16 17 18 19 20 21 22

10.任意类型数组删除任意长度的元素

 byte[] result = { 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28 }; //模拟数组  
 for (int i = 0; i < 4; i++)  //判断该字节数组前四位元素是否等于特定字符0x80
 {
     if (result[0] != 0x80)
     {
         result = result.Skip(1).ToArray(); //不等于特定字符,将原数组长度前4个元素依次删除
        // Skip(1)表示每次删除1个元素,可以一次删除多个
     }
     else
     {
         break;
     }
 }
 //最终输出结果为:result=0x25,0x26,0x27,0x28

11.16进制数据转10进制

 Int16 i16 = Convert.ToInt16("F74B", 16); //结果为-2229   16位
 Int32 i32 = Convert.ToInt32("F74B", 16); //结果为63307   32位
 //将F74B十六进制数据转为10进制

12.两个字节转为10进制有符号数

 byte1[0] = 0x02;
 byte1[1] = 0x87;
 Array.Reverse(byte1); //根据实际情况调整
 short result1 = BitConverter.ToInt16(byte1, 0); // 将字节数组转换为有符号整数

13.将一个字节取出低四位,再拼接一个字节  一共12位,转换为10进制(此方法可扩展)

 int result3 = (tempArray[4] & 0x0F) << 4 | tempArray[5];

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值