在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# 中将十六进制值从 SQL Server 转换为日期时间