刚学C#,想问一下怎么获取文本框中的内容本转换成16进制数组
我现在就是不会转换,比如文本框中输入500,相应的byte数组应该为01 F4,输入50应该为00 32
给个指点吧,卡在这好久了
var str = Convert.ToString(500, 16).PadLeft(4,'0');//不足4位补0
Console.WriteLine(str);
str = Convert.ToString(50, 16).PadLeft(4,'0');//不足4位补0
Console.WriteLine(str);
Console.ReadLine();
private static byte[] strToToHexByte(string hexString)
{
hexString = hexString.Replace(" ", "");//先去掉多余的空格
if ((hexString.Length % 2) != 0)
hexString = "0"+hexString;//输入的字符串不是偶数长度的,前面补零,不是后面补空格
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
{
string str=hexString.Substring(i * 2, 2);
bool IsByte = byte.TryParse(str,System.Globalization.NumberStyles.HexNumber,null,out returnBytes[i]);
if(!IsByte)
{
//字符串里存在不能转换为16进制数的部分,自行处理
}
}
return returnBytes;
}
Console.WriteLine("十进制转十六进制表示: "+Convert.ToString(textbox1.text, 16));
关键代码:Convert.ToString(textbox1.text, 16)
/// <summary>
/// 字符串转16进制字节数组
/// </summary>
/// <param name="hexString"></param>
/// <returns></returns>
private static byte[] strToToHexByte(string hexString)
{
hexString = hexString.Replace(" ", "");
if ((hexString.Length % 2) != 0)
hexString += " ";
byte[] returnBytes = new byte[hexString.Length / 2];
for (int i = 0; i < returnBytes.Length; i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
return returnBytes;
}
如果输入的是正整数的话
private void button4_Click(object sender, EventArgs e)
{
string a = textBox1.Text.Trim();
long b = long.Parse(a);
string c = "";
if (b > 0 && b < 65536)
{
c = b.ToString("x4").ToUpper().Insert(2, " ");
MessageBox.Show(c);
}else if (b >= 65536 && b< 4294967296)
{
c = b.ToString("x8").ToUpper().Insert(2, " ").Insert(5," ").Insert(8, " ");
MessageBox.Show(c);
}
else
{
c = b.ToString("x").ToUpper();
MessageBox.Show(c);
}
}