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

时间:2012-09-14 08:52:48

标签: c#

我有一些十六进制值的字符串。 例如:

<font color=**"&#x26;amp&#x3B;****amp&#x3B**;**amp&#x3B;&#x23;x23&#x3B;**336699">Hi How ARE YOU</font>

我想将上面的字符串存储到数据库中。在这个字符串中我找到了一些十六进制值。 存储时我想将十六进制转换为字符串。 在C#.net中是否有任何解决方案。

1 个答案:

答案 0 :(得分:0)

要解析Hex,你可以这样做:

var hex = "0xFFFFFF";
uint color;

if(uint.TryParse(hex, NumberStyles.HexNumber, CultureInfo.CurrentCulture, out color))
{
    //Parsing ok
}else{
    color = 0; //Parsing failed
}

我上面不知道你的字符串,所以我不确定如何从中提取字符串。


编辑#1:

据我了解你要解析这个字符串

<font color=**"&#x26;amp&#x3B;****amp&#x3B**;**amp&#x3B;&#x23;x23&#x3B;**336699">Hi How ARE YOU</font>

并生成字符串

<font color=0x0987AF>Hi How ARE YOU</font>

我不知道你的色码是如何创建的,所以我无法解析它。

它被嵌入到常规语言中,您可以使用regular expressions将重要的和平放在一起并解析这些结果。如果它是HTML或类似的东西你不能使用正则表达式,而应该逐个字符地迭代它。在这种情况下,使用StringBuilder来保持代码快速。

一旦你将所有的字符串组合在一起,你就可以单独解析它们,计算颜色,然后再用String.Format(""{0:X06}"", color)将它作为十六进制输出。


编辑#2:

我不知道那个颜色字符串的编码,所以我只能粗略估计一下我将如何解析它。

我假设该字符串中的最后一位数字是颜色,其他一切都只是噪音。所以这个

<font color=**"&#x26;amp&#x3B;****amp&#x3B**;**amp&#x3B;&#x23;x23&#x3B;**336699">Hi How ARE YOU</font>

应转换为此

<font color="&336699">Hi How ARE YOU</font>

我没有显示隔离颜色字符串的第一部分,但我想请注意,您不应该尝试使用regular expressions on html。而是像使用mathematical expression一样逐个字符地浏览它。

 String examplestring = @"color=**""&#x26;amp&#x3B;****amp&#x3B**;**amp&#x3B;&#x23;x23&#x3B;**336699""";
 Console.WriteLine(examplestring);
 String lastsixnumbers = examplestring.Substring(examplestring.Length - 7, 6);
 Console.WriteLine(lastsixnumbers);
 String final = String.Format("color=\"#{0}\"", lastsixnumbers);
 Console.WriteLine(final);
 Console.ReadKey();

这有用吗?如果没有,那么我对颜色代码的理解可能是错误的 - 你可以使用color codes提供更多实际匹配的结果,或者甚至更好地向我提供颜色编码的知识。

相关问题