C# 16进制查看文件
我要以16进制的方式打开一个文件,别的程序里面是这样的效果:0000|7B5C727466315C616E73695C616E7369|{\rtf1\ansi\ansi0...
我要以16进制的方式打开一个文件,别的程序里面是这样的效果:
0000 | 7B 5C 72 74 66 31 5C 61 6E 73 69 5C 61 6E 73 69 | {\rtf1\ansi\ansi
0010 | 63 70 67 39 33 36 5C 64 65 66 66 30 5C 64 65 66 | cpg936\deff0\def
0020 | 6C 61 6E 67 31 30 33 33 5C 64 65 66 6C 61 6E 67 | lang1033\deflang
希望高手能为我解题,我实在想不到要怎么办。
这里的\r其实就是\\r,没有换行符的
如果说用Ultra Edit查看的话我就不要花100分来提问了 展开
0000 | 7B 5C 72 74 66 31 5C 61 6E 73 69 5C 61 6E 73 69 | {\rtf1\ansi\ansi
0010 | 63 70 67 39 33 36 5C 64 65 66 66 30 5C 64 65 66 | cpg936\deff0\def
0020 | 6C 61 6E 67 31 30 33 33 5C 64 65 66 6C 61 6E 67 | lang1033\deflang
希望高手能为我解题,我实在想不到要怎么办。
这里的\r其实就是\\r,没有换行符的
如果说用Ultra Edit查看的话我就不要花100分来提问了 展开
4个回答
展开全部
string oldString = "abcd\nefgh\n1234\nABCDEFGHIJKLMN";
byte[] bTemp = System.Text.Encoding.Default.GetBytes(oldString);
char[] ArrayString = oldString.ToCharArray();
string newString = "";
for (int i = 0; i < oldString.Length; i+=16)
{
string a = "";
string b = "";
for (int j = 0; j < 16 && i+j<oldString.Length; j++)
{
//a += string.Format("%h", ArrayString[i]);
a += bTemp[i + j].ToString("X") + " ";
b += ArrayString[i+j];
}
newString += a+" | "+b+"\r\n";
}
0000 | 7B 5C 72 74 66 31 5C 61 6E 73 69 5C 61 6E 73 69 | {\rtf1\ansi\ansi
0010 | 63 70 67 39 33 36 5C 64 65 66 66 30 5C 64 65 66 | cpg936\deff0\def
0020 | 6C 61 6E 67 31 30 33 33 5C 64 65 66 6C 61 6E 67 | lang1033\deflang
右边这一串 \rtf1\ansi\ansi 中的 \r \d 之类的字符,可能你要自己处理一下所有的特殊字符,
没有换行符,那就用这个代码吧,我调试过的,
byte[] bTemp = System.Text.Encoding.Default.GetBytes(oldString);
char[] ArrayString = oldString.ToCharArray();
string newString = "";
for (int i = 0; i < oldString.Length; i+=16)
{
string a = "";
string b = "";
for (int j = 0; j < 16 && i+j<oldString.Length; j++)
{
//a += string.Format("%h", ArrayString[i]);
a += bTemp[i + j].ToString("X") + " ";
b += ArrayString[i+j];
}
newString += a+" | "+b+"\r\n";
}
0000 | 7B 5C 72 74 66 31 5C 61 6E 73 69 5C 61 6E 73 69 | {\rtf1\ansi\ansi
0010 | 63 70 67 39 33 36 5C 64 65 66 66 30 5C 64 65 66 | cpg936\deff0\def
0020 | 6C 61 6E 67 31 30 33 33 5C 64 65 66 6C 61 6E 67 | lang1033\deflang
右边这一串 \rtf1\ansi\ansi 中的 \r \d 之类的字符,可能你要自己处理一下所有的特殊字符,
没有换行符,那就用这个代码吧,我调试过的,
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把文件用Stream来读,每次读指定长度的Bytes数组。然后转换每个Byte的值为十六进制
Byte变量.ToString("x");
Byte变量.ToString("x");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用ultra edit 编辑器工具查看!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你意思是? 把一个文件转化为16进制
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询