string msg="0xBBBBBBBB0x000000010x030xDDDDDDDD"//字符已经是16进制的数子。
int msgLength = msg.Length;
char[] instructionArr = msg.ToCharArray();//将string转换为char
byte[] b = new byte[msgLength];
for (int i = 0; i < msgLength; i++)
{
b[i] = instructionArr[i];//这句就出错了。
}
我的目的就是把msg中的16进制放到b变量中。
int msgLength = msg.Length;
char[] instructionArr = msg.ToCharArray();//将string转换为char
byte[] b = new byte[msgLength];
for (int i = 0; i < msgLength; i++)
{
b[i] = instructionArr[i];//这句就出错了。
}
我的目的就是把msg中的16进制放到b变量中。
b[1]=BB
......
byte中直接存放16进制的数据。
我的string msg="0xBBBBBBBB0x000000010x030xDDDDDDDD"//字符已经是16进制的数子。所以不用转换
前面 加上(byte)强制转换下试试。
0x00000001
实际在内存中保存为
{0x01,0x00,0x00,0x00}string msg="0xBBBBBBBB0x000000010x030xDDDDDDDD";
List<byte> result = new List<byte>();
string[] fields = msg.Split(new string[] { "0x" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string item in fields)
{
result.AddRange(BitConverter.GetBytes(uint.Parse(item, System.Globalization.NumberStyles.HexNumber)));
}
result.ToArray();//这个就是你要的
for (int i = 0; i < buff.Length; i++)
{
buff[i] = Convert.ToByte(instructionArr[i], 16);//转换
}
return buff;
String str = "0xBBBBBBBB0x000000010x030xDDDDDDDD"; String[] ss = str.Split(new String[]{"0x"},StringSplitOptions.None); List<Byte> list = new List<Byte>(); foreach (String s in ss)
{
Byte b;
Byte.TryParse(s, System.Globalization.NumberStyles.HexNumber,null,out b);
list.Add(b);
} foreach (Byte b in list)
Console.WriteLine(b);
{
byte[] byte_data=null;
string tokens = "0xBBBBBBBB0x000000010x030xDDDDDDDD"; byte_data = new byte[tokens.Length/2];
for (int i = 0; i < byte_data.Length; i++)
{
byte_data[i] =Convert.ToByte(tokens.Substring(i*2,2),16);
}
return byte_data;
}
这样写就可以了
Byte.TryParse(s, System.Globalization.NumberStyles.HexNumber,null,out b);//这种也不行。(转换成10进制了?)
result.AddRange(BitConverter.GetBytes(uint.Parse(item, System.Globalization.NumberStyles.HexNumber)));result.ToArray();这是把string msg="0xBBBBBBBB0x000000010x030xDDDDDDDD"转换成其他数字型了。
这个也不行