在 "leave" 文本框之后将 HEX 字符串格式化为字节数组
Format a HEX string as byte array after "leave" the textbox
我已经使用 windows 表单制作了一个小应用程序,我可以在其中输入十六进制数并将其转换为十进制数,但我不知道如何在我输入时自动格式化文本框中的文本在文本框外单击,我在互联网上搜索并发现“OnLeave”操作是我需要的。
当我说格式化文本时,我指的是:
Value 1: 0x00aa00bb -> 0x 00 aa 00 bb
Value 2: 45aa00CC -> 45 aa 00 cc
就像我有一个字节数组一样格式化它们,因为我想用它也将十六进制转换为浮点数,而且这种方式更具可读性。
只需使用一个简单的“for 循环”来解析您输入的值,每次迭代 select 2 个字符并在它们之后附加一个空格:
private void txtHexadecimal_Leave(object sender, EventArgs e)
{
String value = txtHexadecimal.Text;
value = value.Replace(" ", String.Empty);
if (value.Length % 2 == 0)
{
String output = "";
int spliceValue_B = 0;
for (int i = 0; i < value.Length / 2; i++)
{
String sp = value.Substring(spliceValue_B, 2);
if (i != (value.Length / 2) - 1)
sp += " ";
output += sp;
spliceValue_B += 2;
}
txtHexadecimal.Text = output;
}
}
这是另一种方法,因为这是本周到目前为止我最喜欢的星期一:
private void txtHexadecimal_Leave(object sender, EventArgs e)
{
bool addSpaceBefore = true;
StringBuilder sb = new StringBuilder();
foreach(char c in txtHexadecimal.Text.Where(x => !char.IsWhiteSpace(x))) {
if (addSpaceBefore && sb.Length>0)
{
sb.Append(' ');
}
sb.Append(c);
addSpaceBefore = !addSpaceBefore;
}
txtHexadecimal.Text = sb.ToString();
}
我已经使用 windows 表单制作了一个小应用程序,我可以在其中输入十六进制数并将其转换为十进制数,但我不知道如何在我输入时自动格式化文本框中的文本在文本框外单击,我在互联网上搜索并发现“OnLeave”操作是我需要的。 当我说格式化文本时,我指的是:
Value 1: 0x00aa00bb -> 0x 00 aa 00 bb
Value 2: 45aa00CC -> 45 aa 00 cc
就像我有一个字节数组一样格式化它们,因为我想用它也将十六进制转换为浮点数,而且这种方式更具可读性。
只需使用一个简单的“for 循环”来解析您输入的值,每次迭代 select 2 个字符并在它们之后附加一个空格:
private void txtHexadecimal_Leave(object sender, EventArgs e)
{
String value = txtHexadecimal.Text;
value = value.Replace(" ", String.Empty);
if (value.Length % 2 == 0)
{
String output = "";
int spliceValue_B = 0;
for (int i = 0; i < value.Length / 2; i++)
{
String sp = value.Substring(spliceValue_B, 2);
if (i != (value.Length / 2) - 1)
sp += " ";
output += sp;
spliceValue_B += 2;
}
txtHexadecimal.Text = output;
}
}
这是另一种方法,因为这是本周到目前为止我最喜欢的星期一:
private void txtHexadecimal_Leave(object sender, EventArgs e)
{
bool addSpaceBefore = true;
StringBuilder sb = new StringBuilder();
foreach(char c in txtHexadecimal.Text.Where(x => !char.IsWhiteSpace(x))) {
if (addSpaceBefore && sb.Length>0)
{
sb.Append(' ');
}
sb.Append(c);
addSpaceBefore = !addSpaceBefore;
}
txtHexadecimal.Text = sb.ToString();
}