-1

好的,所以我正在制作一个 ASCII 到 HEX 转换器,它工作正常,但是当我插入换行符时,它会用这个字符替换它们 -> Ú


转这个

1
2
3

对此

1Ú2Ú3

命令按钮下的代码

    private void asciiToHex_Click(object sender, EventArgs e)
    {
        HexConverter HexConvert =new HexConverter();
        string sData=textBox1.Text;
        textBox2.Text = HexConvert.StringToHexadecimal(sData);
    }

    private void hexToAscii_Click(object sender, EventArgs e)
    {
        HexConverter HexConvert = new HexConverter();
        string sData = textBox1.Text;
        textBox2.Text = HexConvert.HexadecimalToString(sData);
    }

HexConverter.cs 下的代码

public class HexConverter
{
    public string HexadecimalToString(string Data)
    {
        string Data1 = "";
        string sData = "";

        while (Data.Length > 0)
        //first take two hex value using substring.
        //then  convert Hex value into ascii.
        //then convert ascii value into character.
        {
            Data1 = System.Convert.ToChar(System.Convert.ToUInt32(Data.Substring(0, 2), 16)).ToString();
            sData = sData + Data1;
            Data = Data.Substring(2, Data.Length - 2);
        }
        return sData;
    }
    public string StringToHexadecimal(string Data)
    {
        //first take each charcter using substring.
        //then  convert character into ascii.
        //then convert ascii value into Hex Format

        string sValue;
        string sHex = "";
        foreach (char c in Data.ToCharArray())
        {
            sValue = String.Format("{0:X}", Convert.ToUInt32(c));
            sHex = sHex + sValue;
        }
        return sHex;
    }
}  

有任何想法吗?

4

3 回答 3

1

问题是String.Format("{0:X}", Convert.ToUInt32(c))它的输出没有补零到两位数,所以\r\n变成DA0D0A. 你会遇到类似的问题,但更糟糕的是,使用\t(它变成9而不是09,这也会导致后续字符不对齐)。

要将零填充到两位数,您可以使用X2代替 bare X; 或者,更一般地说,您可以使用零填充到n位。(请参阅MSDN 上的“标准数字格式字符串”页面。)Xn

于 2013-03-12T21:29:56.977 回答
0

代替

System.Convert.ToUInt32(hexString), 利用

uint.Parse(hexString, System.Globalization.NumberStyles.AllowHexSpecifier);

MSDN 说“AllowHexSpecifier 标志表示要解析的字符串总是被解释为十六进制值”

如何:在十六进制字符串和数字类型之间进行转换

于 2013-03-12T21:24:59.153 回答
-1

你能做的最懒惰的事情就是string.replace("Ú","\r\n")对结果做 a 。除非有令人信服的理由不这样做,否则我会从这里开始。

否则,在您的 Char 循环中,查找 NewLine 字符并将其按原样添加到您的字符串中。

于 2013-03-12T21:22:10.213 回答