将字符串转换为格式为“\ x .. \ x ..”的十六进制字符串?

时间:2012-03-21 07:53:47

标签: c# silverlight windows-phone-7

我尝试将修改后的GUID字符串(例如6b5737e5728786794fff5e009d74d706)转换为格式为\x..\x..的十六进制字符串

String format and hex chars对我不起作用)。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

Regex.Replace(myString, ".{2}", "\\x$0");

如果您想要使用非正则路由,那么以下内容可能会有效:

string s = "6b5737e5728786794fff5e009d74d70";
var sb = new StringBuilder($s.Length * 2);

for (int i = 0; i < s.Length; i+=2)
  sb.Append("\\x").Append(s.Substring(i, [Math]::Min(2, s.Length - i)));

string myNewString = sb.ToString();

如果你想让你的字符串包含(例如)代码点U + 006B,U + 0057,U + 0037,&amp; c。那么请再想一想。 字符串不是字节容器,它们是 text 容器。在这种情况下你需要byte[]

byte[] byteArray = new byte[(s.Length + 1) / 2]
for (int i = 0; i < s.Length; i+=2)
  byteArray[i/2] = Convert.ToByte(s.Substring(i, [Math]::Min(2, s.Length - i)));