C#十六进制与字符串、字节数组之间的转换
在计算机编程中,十六进制、字符串和字节数组之间的转换是非常重要的。C#语言提供了多种方式来实现这些转换。
一、十进制与二进制、八进制、十六进制之间的转换
在C#中,可以使用Convert类来实现十进制与二进制、八进制、十六进制之间的转换。例如,要将十进制数166转换为二进制、八进制和十六进制,可以使用以下代码:
```csharp
Console.WriteLine("十进制 166 的二进制表示: "+Convert.ToString(166, 2));
Console.WriteLine("十进制 166 的八进制表示: "+Convert.ToString(166, 8));
Console.WriteLine("十进制 166 的十六进制表示: "+Convert.ToString(166, 16));
```
反之,要将二进制、八进制和十六进制转换为十进制,可以使用以下代码:
```csharp
Console.WriteLine("二进制 111101 的十进制表示: "+Convert.ToInt32("111101", 2));
Console.WriteLine("八进制 44 的十进制表示: "+Convert.ToInt32("44", 8));
Console.WriteLine("十六进制 CC 的十进制表示: "+Convert.ToInt32("CC", 16));
```
二、十六进制与字符串之间的转换
在串口通讯过程中,经常需要将十六进制字符串转换为字符串,反之亦然。可以使用以下方法实现:
```csharp
private string StringToHexString(string s, Encoding encode) {
byte[] b = encode.GetBytes(s);
string result = string.Empty;
for (int i = 0; i < b.Length; i++) {
result += "%" + Convert.ToString(b[i], 16);
}
return result;
}
private string HexStringToString(string hs, Encoding encode) {
string[] chars = hs.Split(new char[]{'%'}, StringSplitOptions.RemoveEmptyEntries);
byte[] b = new byte[chars.Length];
for (int i = 0; i < chars.Length; i++) {
b[i] = Convert.ToByte(chars[i], 16);
}
return encode.GetString(b);
}
```
三、十六进制与字节数组之间的转换
可以使用以下方法将十六进制字符串转换为字节数组,反之亦然:
```csharp
private static byte[] strToToHexByte(string hexString) {
hexString = hexString.Replace(" ", "");
if ((hexString.Length % 2) != 0) {
hexString += " ";
}
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++) {
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
}
return returnBytes;
}
public static string byteToHexStr(byte[] bytes) {
string returnStr = "";
if (bytes != null) {
for (int i = 0; i < bytes.Length; i++) {
returnStr += bytes[i].ToString("X2");
}
}
return returnStr;
}
```
四、汉字与十六进制之间的转换
可以使用以下方法将汉字转换为十六进制:
```csharp
private static string StringToHexString(string s, Encoding encode) {
byte[] b = encode.GetBytes(s);
string result = string.Empty;
for (int i = 0; i < b.Length; i++) {
result += "%" + Convert.ToString(b[i], 16);
}
return result;
}
```
C#提供了多种方式来实现十六进制、字符串和字节数组之间的转换,可以根据实际情况选择合适的方法。