在C#中将十六进制字符串转换为其数值[重复]

Posted

技术标签:

【中文标题】在C#中将十六进制字符串转换为其数值[重复]【英文标题】:Convert hexadecimal string to its numerical values in C# [duplicate] 【发布时间】:2012-04-06 21:20:49 【问题描述】:

我的表单上有一个文本框。我想将“0x31”作为字符串写入我的文本框,然后当我单击按钮时,我想将此字符串转换为 0x31 作为十六进制值。

如何将此字符串转换为十六进制值?

【问题讨论】:

【参考方案1】:
int i = Convert.ToInt32("0x31", 16);
Console.WriteLine("0x" + i.ToString("X2"))

【讨论】:

【参考方案2】:
string hexValues = "48 65 6C 6C 6F 20 57 6F 72 6C 64 21";
string[] hexValuesSplit = hexValues.Split(' ');
foreach (String hex in hexValuesSplit)

    // Convert the number expressed in base-16 to an integer.
    int value = Convert.ToInt32(hex, 16);
    // Get the character corresponding to the integral value.
    string stringValue = Char.ConvertFromUtf32(value);
    char charValue = (char)value;
    Console.WriteLine("hexadecimal value = 0, int value = 1, char value = 2 or 3",
                    hex, value, stringValue, charValue);

示例来自:http://msdn.microsoft.com/en-us/library/bb311038.aspx

【讨论】:

【参考方案3】:

十六进制只是一个值的表示,它本身不是一个值。

本页将告诉您有关在 C# 中解析和显示十六进制的所有信息

http://msdn.microsoft.com/en-us/library/bb311038.aspx

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review @JessedeBruijne 这与仅链接答案相差甚远,不应通过 LQP 队列删除。 @FrankerZ 把链接拿走,还剩下什么?只是评论,不是答案。 OP询问如何转换该值,该评论没有回答。如果该帖子包含链接中提供的代码示例,那将是有效的,但到目前为止,它实际上是一个仅链接的答案,即使不是,它也肯定不是“与仅链接答案相去甚远”。 具有讽刺意味的是,接受的答案中包含完全相同的链接,但如果链接页面发生变化,它仍然是有效答案。【参考方案4】:

首先要澄清的是:字符串是十六进制格式的,当你把它转换成一个值时它只是一个数值,它不是十六进制的。

Int32.Parse 方法与NumberStyle.HexNumber 说明符一起使用:

string input = "0x31";

int n;
if (input.StartsWith("0x")) 
  n = Int32.Parse(input.Substring(2), NumberStyles.HexNumber);
 else 
  n = Int32.Parse(input);

【讨论】:

【参考方案5】:

字符串十六进制值是一个值的表示。实际的字符串值可以转换为您喜欢的任何值(float、int 等) 有几种方法可以做到the conversion。简单例子:

// convert to int from base 16
int value = Convert.ToInt32(hex, 16);

【讨论】:

您可以有两种选择: - 如果您的十六进制包含 0x 前缀:csharp Convert.ToInt32("Your Hex", 16); - 如果您的十六进制不包含 0x前缀:csharp int.Parse("Your Hex", System.Globalization.NumberStyles.HexNumber); 【参考方案6】:

请注意,十六进制只是一个值的表示 - 所以你真正要问的是如何从字符串中解析一个值 - 这样做:

int val = int.Parse("0x31", NumberStyles.HexNumber);

val 现在包含一个十六进制值为 0x31 的 int。

【讨论】:

这是错误的。它应该是没有前缀“0x”的“31”,否则它会抛出 System.FormatException

以上是关于在C#中将十六进制字符串转换为其数值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在c#中将十六进制从char []转换为int [重复]

在 C# 中将字符串转换为十六进制字符串

在 C# 中将十六进制值从 SQL Server 转换为日期时间

在android中将字节[]转换为十六进制字符串[重复]

在Postgres中将十六进制字符串转换为bigint [重复]

如何在Python中将十六进制字符串转换为ObjectId [重复]