一、不同进制的数相互转换
方法一:
//如果输入的十六进制是字符串
string aaa = "0fff";
int aa = Convert.ToInt32(aaa, 16);
Console.WriteLine(aa.ToString());
//输出:4095
//如果十六进制不是字符串,而是如:int a = 0xfff;这样的可以直接用,因为它本身就是数字
int a = 0xfff;
Console.WriteLine(a.ToString());
//输出:4095
方法二:
int d = 10;
//十进制转二进制字符串
Console.WriteLine(Convert.ToString(d,2));
//输出: 1010
//十进制转十六进制字符串
Console.WriteLine(Convert.ToString(d,16));
//输出: a
Console.WriteLine(Convert.ToString(d,16).ToUpper().PadLeft(4, '0'));
//输出: 000A
Console.WriteLine(Convert.ToString(d,16).ToUpper().PadLeft(2, '0'));
//输出: 0A
Console.WriteLine(d.ToString("X4"));
//输出: 000A
Console.WriteLine(d.ToString("X2"));
//输出: 0A
//二进制字符串转十进制数
string bin = "1010";
Console.WriteLine(Convert.ToInt32(bin,2));
//输出: 10
//十六进制字符串转十进制数
string bin = "50";
Console.WriteLine(Convert.ToByte(bin,16));
//输出: 80
//二进制字符串转十六进制数
string bin = "1010";
Console.WriteLine(string.Format("{0:x}",Convert.ToInt32(bin,2)));
//输出: a
//十六进制转二进制字符串
Console.WriteLine(Convert.ToString(0xa,2));
//输出: 1010
//十六进制转十进制数
Console.WriteLine(Convert.ToString(0xa,10));
//输出: 10
二、byte[]转为二进制字符串表示(8bit)
using System;
namespace ConsoleApp4
{
class Program
{
static void Main(string[] args)
{
// byte[]转为二进制字符串表示(8bit)
byte[] bytesTest = new byte[] {
1,2,3,4,5,6,7,8};
string strResult = "";
for (int i = 0; i < bytesTest.Length; i++)
{
string strTemp = System.Convert.ToString(bytesTest[i], 2);
strTemp = strTemp.Insert(0, new string('0', 8 - strTemp.Length));//不满8位,补0
strResult += strTemp+" ";
}
Console.WriteLine(strResult);
Console.ReadLine();
}
}
}
运行结果: