【发布时间】:2013-02-28 14:49:19
【问题描述】:
好的,所以我正在制作一个 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;
}
}
有什么想法吗?
【问题讨论】:
-
您需要保留换行符吗?如果是这样,最容易逐行处理输入并在之后加入它们。否则,其他答案将为您指明正确的方向。
-
这实际上取决于您如何获取数据 - 如果它来自文件,那么直接读取行(例如使用 File.ReadAllLines)将是最简单的。对于通用解决方案,只需使用
str.Split(new[] {"\r\n"}, StringSplitOptions.None)拆分字符串 - 这将为您提供一个数组;创建一个新数组或列表,将转换后的字符串放入其中,然后使用string.Join("\r\n", newArray)将其与换行符一起构建。其实最好把"\r\n"换成Environment.NewLine...