C#中进制之间的转化
各进制的英文描述,后面描述进制时以简称代替
- 二进制 Binary (BIN)
- 八进制 Octal (OCT)
- 十进制 Decimal (DEC)
- 十六进制 Hex
代码示例
int desNumber = 123; //DEC->BIN var binStr = Convert.ToString(desNumber, 2).PadLeft(8, '0'); Console.WriteLine(binStr); //BIN->DEC Console.WriteLine(Convert.ToInt16(binStr, 2)); //DEC->OCT string octStr = Convert.ToString(desNumber, 8); Console.WriteLine(octStr); //DEC->OCT Console.WriteLine(Convert.ToInt16(octStr, 8)); //DEC->HEX string hexStr = Convert.ToString(desNumber, 16); Console.WriteLine(hexStr); //HEX->DEC Console.WriteLine(Convert.ToInt16(hexStr, 16)); //byte->int var bytes = new byte[4] { 123, 234, 23, 56 }; Console.WriteLine(Convert.ToInt16(bytes[1])); //bytes-hexstring Console.WriteLine(Convert.ToHexString(bytes));
Console.WriteLine(bytes.Aggregate(string.Empty, (acc, b) => $"{acc}{Convert.ToString(b, 16)}"));
实践
string msg = "我是测试信息"; var msgBytes = System.Text.Encoding.UTF8.GetBytes(msg); //toHexString var hexMsg1 = msgBytes.Aggregate(string.Empty, (acc, b) => $"{acc}{Convert.ToString(b, 16)}"); Console.WriteLine(hexMsg1.ToUpper()); var hexMsg2 = Convert.ToHexString(msgBytes);//默认转大写 Console.WriteLine(hexMsg2); StringBuilder builder = new StringBuilder(); msgBytes.ToList().ForEach(b=>builder.AppendFormat("{0:X2}",b));//{0:x2}输出小写样式 {0:X2}输出大写样式 Console.WriteLine(builder.ToString()); //toBinaryString,以-隔开 var binMsgStr = msgBytes.Aggregate(string.Empty, (acc, b) => $"{acc}{Convert.ToString(b, 2)}-"); Console.WriteLine(binMsgStr.TrimEnd('-'));
浙公网安备 33010602011771号