应用场景1:
textbox中输入str=“200”(string类型),需转换为16进制hex=c8(byte、char、int类型)
解决方法:
利用Convert.ToByte(str)/.ToChar(str)/.ToInt16(str)/.ToInt32(str)/.ToInt64(str)
或者
byte/char/int.TryParse(str,out hex);会自动转换为16进制数据
例:
string mytime_str = time.Text;//textbox名为time
byte mytime_b;
byte.TryParse(mytime_str, out mytime_b);
//mytime_b = Convert.ToByte(mytime_str);
应用场景2:
textbox中输入str=“010203040506”(string类型),需转换为16进制数组(byte[]、char[]、int[]类型)
解决方法:
方法一:
首先利用str.Substring(指定字符位置, 指定长度)将字符串两两分组,再根据Convert.To或.TryParse可直接将字符串转换为对应的16进制byte/int/char的特点,将字符串两两转换为16进制byte/int/char
方法二:
首先将string类型字符串转换为byte[]/char[]/int[]类型数组(ASCII,非16进制)——利用Encoding.Default.GetBytes(str)/.GetChars(str)
或者
str.ToCharArray();
再根据ASCII转换表转换为16进制
注意:
1、Encoding.Default.GetBytes(str)/.GetChars(str)以及str.ToCharArray()将字符串转换为ASCII表中的16进制byte/char数组,而非实际数字对应的16进制,目前还没有找到把字符串直接变为16进制数组的函数
2、str.Replace("#", “”)可以替换无关字符串
例:
方法一(推荐使用)
private static byte[] strToToHexBytes(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