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號