c#字符串16进制转10进制
时间: 2023-08-27 19:06:45 浏览: 125
在C#中,可以使用内置的转换方法将十六进制字符串转换为十进制数。可以使用`Convert.ToInt32`方法来实现这个转换。例如,如果有一个十六进制字符串`hexString`,可以使用以下代码将其转换为十进制数:
```csharp
string hexString = "FF";
int decimalNumber = Convert.ToInt32(hexString, 16);
```
在这个例子中,`hexString`表示要转换的十六进制字符串,`16`表示要转换的进制。`Convert.ToInt32`方法将十六进制字符串转换为对应的十进制数。转换后的结果将存储在`decimalNumber`变量中。
请注意,如果十六进制字符串表示的是一个负数,可以使用位运算和条件语句来处理。例如,如果要将有符号的十六进制数转换为有符号的十进制数,可以使用以下代码:
```csharp
int x = 0xffff;
if (x > 0x7fff)
{
x = x - 0x10000;
}
```
在这个例子中,`x`表示有符号的十六进制数。通过比较`x`和`0x7fff`,可以判断`x`是否为负数。如果是负数,可以通过减去`0x10000`来得到对应的有符号十进制数。
综上所述,要在C#中将十六进制字符串转换为十进制数,可以使用`Convert.ToInt32`方法。如果需要处理有符号的十六进制数,可以使用位运算和条件语句来实现。
相关问题
c#16进制字符串转10进制
要将C#中的16进制字符串转换为10进制,可以使用以下代码段:
```csharp
public long convertToint(string sum)
{
long vars = 0;
var c = sum.ToCharArray().Reverse().ToArray();
for (int i = 0; i < c.Length; i++)
{
if (isLetters(c[i]) == -1)
{
vars = -1;
break;
}
vars = (long)(isLetters(c[i]) * Math.Pow(16, i));
}
return vars;
}
public int isLetters(char c)
{
int i = 0;
switch (c=Char.ToLower(c))
{
case '0': i = 0; break;
case '1': i = 1; break;
case '2': i = 2; break;
case '3': i = 3; break;
case '4': i = 4; break;
case '5': i = 5; break;
case '6': i = 6; break;
case '7': i = 7; break;
case '8': i = 8; break;
case '9': i = 9; break;
case 'a': i = 10; break;
case 'b': i = 11; break;
case 'c': i = 12; break;
case 'd': i = 13; break;
case 'e': i = 14; break;
case 'f': i = 15; break;
default: i = -1; break;
}
return i;
}
```
该`convertToint`函数接受一个16进制字符串作为参数,并将其转换为对应的10进制值。如果字符串不是16进制形式,则返回-1。
用法示例:
```csharp
string hexString = "1A";
long decimalValue = convertToint(hexString);
Console.WriteLine(decimalValue); // 输出 "26"
```
请注意,这只是一个示例代码,你可以根据自己的需求进行修改和优化。
C# 字符串转 16进制
在C#中,可以使用以下代码将字符串转换为16进制:
```csharp
string str = "hello world";
byte[] bytes = Encoding.Default.GetBytes(str);
string hex = BitConverter.ToString(bytes).Replace("-", "");
```
这里的 `Encoding.Default.GetBytes(str)` 将字符串转换为字节数组,`BitConverter.ToString(bytes)` 将字节数组转换为16进制字符串,`Replace("-", "")` 则是将其中的 "-" 去掉。
如果你需要将16进制字符串转换回原始字符串,可以使用以下代码:
```csharp
string hex = "68656C6C6F20776F726C64";
byte[] bytes = new byte[hex.Length / 2];
for (int i = 0; i < bytes.Length; i++)
{
bytes[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
}
string str = Encoding.Default.GetString(bytes);
```
这里的 `Convert.ToByte(hex.Substring(i * 2, 2), 16)` 将每两个字符转换为一个字节,最后使用 `Encoding.Default.GetString(bytes)` 将字节数组转换为字符串。