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);

浙公网安备 33010602011771号