日期:2014-05-17  浏览次数:20989 次

关于编码的转换上的一些问题
in:47 45 54 20 2F 62 2E 68 74 6D 20 48 54 54 50 2F 31 2E 31 0D 0A 48 6F 73 74 3A 20 31 39 32 2E 31 36 38 2E 30 2E 33 3A 38 31 38 31 0D 0A 0D 0A
该字符串是十六进制的字符串,我可以把这个十六进制的字符串放到richtextbox上,然后转换成文本字符串,但是我把这个文本字符串复制后再粘贴到richtextbox上时,再转换成16进制字符串的时候,会出现0D 0A消失。分析是:0D 0A 转换成的文本字符串是不显示的,当我复制的时候。这个不显示的字符串没有被复制,才造成这种现象。怎么解决呢?在线等答案~~~~
------最佳解决方案--------------------
int main(){ char chBuf[3][0x100]; FILE *pF = fopen(__FILE__, "r"); fscanf(pF, "%[^\x00d^\x00a]", chBuf[0]);//得到第 1 行//遇到0D0A结束 fgetc(pF);fgetc(pF); //跳过0D0A  fscanf(pF, "%[^\x00d^\x00a]", chBuf[1]);//得到第 2 行//遇到0D0A结束 fgetc(pF);fgetc(pF); //跳过0D0A  fscanf(pF, "%[^\x00d^\x00a]", chBuf[2]);//得到第 3 行//遇到0D0A结束 fclose(pF); printf("First 3 lines in file:\n");  puts(chBuf[0]); //输出得到的第 1 行 puts(chBuf[1]); //输出得到的第 2 行 puts(chBuf[2]); //输出得到的第 3 行 return 0;}
------其他解决方案--------------------
已经解决,解决方式如下面的函数
private string StringToHexString(string s)
        {
            string result = string.Empty;
            string[] test = s.Split(new char[]{'\n'});
            foreach (string str in test)
            {
                byte[] bs = Encoding.ASCII.GetBytes(str);
                for (int i = 0; i < bs.Length; i++)//逐字节变为16进制字符
                {
                    result += Convert.ToString(bs[i], 16) + " ";
                }
                result += "0D 0A ";
            }
            if (!s.EndsWith("\n")) result = result.Remove(result.Length - 6);
            return result;
        }

------其他解决方案--------------------
引用:
int main(){ char chBuf[3][0x100]; FILE *pF = fopen(__FILE__, "r"); fscanf(pF, "%[^\x00d^\x00a]", chBuf[0]);//得到第 1 行//遇到0D0A结束 fgetc(pF);fgetc(pF); //跳过0D0A  fscanf(pF, "%[^\x00d^\x00a]",……

谢谢!我想问的是在C#上的解决方法,c的话有点麻烦
------其他解决方案--------------------
而且你这段代码怎么还打开文件?我这只是在richetxtbox上的。没涉及到文件操作,
------其他解决方案--------------------