\x00\x24\xea\x38 这样的字符串转换

utopia_chen1 2012-06-01 03:01:49
string s1 = "\x00\x00\x00\x00\x00\x24\xea\x38";
string s2 = "\\x00\\x00\\x00\\x00\\x00\\x24\\xea\\x38";

上面2个字符串,怎么把s2转换成s1的样子??请高手赐教。。

具体情况描述: s1是我从网页中截取出来的,网站上就显示为“\x00\x00\x00\x00\x00\x24\xea\x38”,可是保存到字符串中,就变成s2的样子了。可是我要用的是s1的样子,不知道怎么转换。
...全文
1877 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ParanoidKing 2012-06-01
  • 打赏
  • 举报
回复
那这样吧

string s3 = new string(
Array.ConvertAll(
Array.FindAll(s2.Split('\\'),
new Predicate<string>(delegate(string s) {
return !string.IsNullOrEmpty(s);
})),
delegate(string s)
{
return (char)short.Parse(s.Replace("x", ""), System.Globalization.NumberStyles.AllowHexSpecifier);
})
);
utopia_chen1 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]

引用 15 楼 的回复:
引用 12 楼 的回复:

引用 8 楼 的回复:
引用 7 楼 的回复:

引用 6 楼 的回复:

引用 3 楼 的回复:

s2的值就是s1,输出一下看看就知道了
s1这个字符串,如果不加@,肯定输出乱码了


不一样的,你输出看吧。 你把s1输出看看。


你是就想获得我所谓的乱码吗?

对头


C# code
……
[/Quote]

这是给客户的一个程序,用的2.0的框架,换版本不现实啊。。。
ParanoidKing 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
引用 12 楼 的回复:

引用 8 楼 的回复:
引用 7 楼 的回复:

引用 6 楼 的回复:

引用 3 楼 的回复:

s2的值就是s1,输出一下看看就知道了
s1这个字符串,如果不加@,肯定输出乱码了


不一样的,你输出看吧。 你把s1输出看看。


你是就想获得我所谓的乱码吗?

对头


C# code

string s3 = ne……
[/Quote]

using System.Linq;
utopia_chen1 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 8 楼 的回复:
引用 7 楼 的回复:

引用 6 楼 的回复:

引用 3 楼 的回复:

s2的值就是s1,输出一下看看就知道了
s1这个字符串,如果不加@,肯定输出乱码了


不一样的,你输出看吧。 你把s1输出看看。


你是就想获得我所谓的乱码吗?

对头


C# code

string s3 = new string(
s……
[/Quote]

出错啊,说System.Array不包含Skip的定义
utopia_chen1 2012-06-01
  • 打赏
  • 举报
回复
自己解决了,s1是十六进制的,我要的是得到他的值,靠replace是不可能得到的。

我的解决办法如下:
1:先把s2 拆分成数组 得到 00 00 00 00 00 24 ea 38
2:得到对应的10进制值 分别为 0 0 0 0 0 36 234 56
3:然后得到对应的ascii值 分变为 \0 \0 \0 \0 \0 $ ê 8
4:最后的组合成字符串,最后的值就是 "\0\0\0\0\0$ê8"

"\x00\x00\x00\x00\x00\x24\xea\x38" 等价于 "\0\0\0\0\0$ê8"

结贴了,虽然没解决问题,还是谢谢大家的帮助。
zuowen8605 2012-06-01
  • 打赏
  • 举报
回复


[Quote=引用 12 楼 的回复:]

引用 8 楼 的回复:
引用 7 楼 的回复:

引用 6 楼 的回复:

引用 3 楼 的回复:

s2的值就是s1,输出一下看看就知道了
s1这个字符串,如果不加@,肯定输出乱码了


不一样的,你输出看吧。 你把s1输出看看。


你是就想获得我所谓的乱码吗?

对头


C# code

string s3 = new string(
s……
[/Quote]
ParanoidKing 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
引用 7 楼 的回复:

引用 6 楼 的回复:

引用 3 楼 的回复:

s2的值就是s1,输出一下看看就知道了
s1这个字符串,如果不加@,肯定输出乱码了


不一样的,你输出看吧。 你把s1输出看看。


你是就想获得我所谓的乱码吗?

对头
[/Quote]


string s3 = new string(
s2.Split('\\').Skip(1).Select((o) =>
{
return (char)short.Parse(o.Replace("x", ""), System.Globalization.NumberStyles.AllowHexSpecifier);
}).ToArray());


s3就是像s1那样的乱码。只是我想知道lz要这样的乱码来干嘛?
bdmh 2012-06-01
  • 打赏
  • 举报
回复
没问题,你仔细看看写对没有
utopia_chen1 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

C# code

string s1 = @"\x00\x00\x00\x00\x00\x24\xea\x38";
s1 = s1.Replace("\\", @"\\");
MessageBox.Show(s1);
[/Quote]

转换完成"\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x24\\\\xea\\\\x38"这样的了
bdmh 2012-06-01
  • 打赏
  • 举报
回复

string s1 = @"\x00\x00\x00\x00\x00\x24\xea\x38";
s1 = s1.Replace("\\", @"\\");
MessageBox.Show(s1);
utopia_chen1 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 6 楼 的回复:

引用 3 楼 的回复:

s2的值就是s1,输出一下看看就知道了
s1这个字符串,如果不加@,肯定输出乱码了


不一样的,你输出看吧。 你把s1输出看看。


你是就想获得我所谓的乱码吗?
[/Quote]
对头
zuowen8605 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 3 楼 的回复:

s2的值就是s1,输出一下看看就知道了
s1这个字符串,如果不加@,肯定输出乱码了


不一样的,你输出看吧。 你把s1输出看看。
[/Quote]

你是就想获得我所谓的乱码吗?
utopia_chen1 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

s2的值就是s1,输出一下看看就知道了
s1这个字符串,如果不加@,肯定输出乱码了
[/Quote]

不一样的,你输出看吧。 你把s1输出看看。
utopia_chen1 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

假如你是在 VS 的监视窗口里看是 s2 的样子,那没关系的,实际值还是 s1 ,只是显示的时候加上了转义字符
[/Quote]

我最终要的是s1的值,因为s1和s2是完全不同的字符串。你可以两个都输出看下,是不一样的。
utopia_chen1 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

s2.Replace("\\","\");
[/Quote]

这样不行的,出错
zuowen8605 2012-06-01
  • 打赏
  • 举报
回复
s2的值就是s1,输出一下看看就知道了
s1这个字符串,如果不加@,肯定输出乱码了
__天涯寻梦 2012-06-01
  • 打赏
  • 举报
回复
假如你是在 VS 的监视窗口里看是 s2 的样子,那没关系的,实际值还是 s1 ,只是显示的时候加上了转义字符
熙风 2012-06-01
  • 打赏
  • 举报
回复
s2.Replace("\\","\");

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧