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 @   WmW  阅读(263)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示