C# 将字节数组,数值和十六进制字符串,数值和二进制字符串相互转换

            byte[] bs = new byte[32];
            Random random = new Random();
            random.NextBytes(bs);  //给字节数组填充随字节

            string hex = BitConverter.ToString(bs); //将字节数组转成十六进制字符串,默认-分割
            Console.WriteLine(hex);
            var bs2 = Array.ConvertAll(hex.Split('-'), p => Convert.ToByte(p, 16)); //将-分割的十六进制字符串转成字节数组
            Console.WriteLine(bs.SequenceEqual(bs2)); //对比转换后的数据是否相等
            int num = 1234567890;
            Console.WriteLine("0x" + num.ToString("x")); //将数值转成十六进制,x小写时得到的字符串字母小写
            var hex2 = num.ToString("X");
            Console.WriteLine("0x" + hex2); //将数值转成十六进制,x大写时得到的字符串字母大写
            Console.WriteLine("0x" + num.ToString("X10")); //将数据转成十六进制,不足10位,补零,超过不影响
            var num2 = Convert.ToInt32(hex2, 16); //将十六进制字符串转成十进制数值
            Console.WriteLine(num == num2); //对比

 数值和二进制字符串的相互转换

            int num = 1;
            num = num | 0x80;  //0x80=128=0b10000000
            Console.WriteLine(num);
            var binStr = Convert.ToString(num, 2).PadLeft(8, '0');  //数值转二进制字符串
            Console.WriteLine(binStr);
            int b = Convert.ToInt32(binStr, 2); //二进制字符串转数值
            Console.WriteLine(b);
            Console.WriteLine((sbyte)b);
            var num1 = 0b10000001; //C#中可以以二进制的形式声明数值
            num1 = 0b1000_0001;  //也可以4位加一个_,方便识别
            var num2 = 0x81; //可以以十六进制的形式声明数值
            Console.WriteLine(num1);
            Console.WriteLine(num2);
            Console.WriteLine(num1 == num2);
            var num3 = 0xFF_81_FF; //十六进制也可以用下划线分割方便识别
            Console.WriteLine(num3);

 

posted @ 2024-01-16 10:28  WmW  阅读(347)  评论(0)    收藏  举报