Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串中的十六进制表示形式转换为等效的二进制表示形式_C#_.net_String - Fatal编程技术网

C# 将字符串中的十六进制表示形式转换为等效的二进制表示形式

C# 将字符串中的十六进制表示形式转换为等效的二进制表示形式,c#,.net,string,C#,.net,String,在字符串中,用十六进制值YZ字符替换的每个匹配项。字符仅用于此目的,字符串保证格式良好 示例('0'=0x30):AB=>A0B 这是一项简单的任务,但有很多解决方案,我想知道最好的方法。使用正则表达式可以轻松完成: s = Regex.Replace(s, "<0x([0-9a-f]+)>", m => Char.ConvertFromUtf32( Int32.Parse(m.Groups[1].Value, Numbe

在字符串中,用十六进制值YZ字符替换的每个匹配项。<和>字符仅用于此目的,字符串保证格式良好

示例('0'=0x30):
AB
=>
A0B


这是一项简单的任务,但有很多解决方案,我想知道最好的方法。

使用正则表达式可以轻松完成:

s = Regex.Replace(s, "<0x([0-9a-f]+)>",
      m => Char.ConvertFromUtf32(
                      Int32.Parse(m.Groups[1].Value, NumberStyles.HexNumber))
      ); 
s=Regex.Replace(s,“,
m=>Char.ConvertFromUtf32(
解析(m.Groups[1].值,NumberStyles.HexNumber))
); 

它可能缺少一些错误检查。这使用了。

我认为正则表达式替换是最简单的方法:

s = Regex.Replace(
  s,
  @"<0[Xx]([\dA-Fa-f]{2})>",
  m => ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString()
);
s=Regex.Replace(
s
@"",
m=>((char)Convert.ToInt32(m.Groups[1].Value,16)).ToString()
);
通过匹配精确的模式,它对字符串的限制更少,例如,
字符仍然可以使用。此外,如果一个标记碰巧出现错误,它将保持不变,而不是导致异常


这将替换像
这样的标记,但保持例如
不变。

匹配数字并转换为int,然后转换为char

var str = "A<0x30>B";

var result = Regex.Replace(str, "<0x((\\d|[A-Z])+)>",
    delegate (Match m)
    {
        return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString();
    }, RegexOptions.IgnoreCase);
A0B