我猜它很简单,但是浪费了我很多时间,但仍然没有运气!
以下工作非常顺利 -
sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
byte[] bytes=new byte[]{0x7F, 0x00, 0x00, 0x21, 0x09, 0x7F, 0x30, 0x00, 0x15, 0x02, 0x02, 0x00, 0xEE, 0x28, 0xCB, 0x87 };
sck.Connect("192.168.1.100", 8008);
sck.Send(bytes);
sck.Close();
并且,如果我将这些十六进制字符串数组保存在文本框中,如 -
textbox1.Text="0x7F, 0x00, 0x00, 0x21, 0x09, 0x7F, 0x30, 0x00, 0x15, 0x02, 0x02, 0x00, 0xEE, 0x28, 0xCB, 0x87";
但是,我需要将textbox1.Text字符串用于同一个任务;像 -
sck.Send(textbox1.Text);
我尝试了很多,但无法提出任何解决方案。请指导我......
实际上,我会将十六进制字符串作为字符串保存在数据库中,稍后将在我的程序中检索。
答案 0 :(得分:0)
首先,string
和byte array
之间的区别是:
"0x03" as a string is of 4 bytes
0x03 as an entry in a byte array is of 1 byte
所以你需要做的是Delimit
,
处的字符串并分隔不同的十六进制字符串,将它们存储在字符串数组或任何其他数据结构中。
然后你必须使用某个函数将这些字符串转换为单个字节,或者你可以创建自己的方法,其中一个可以找到here。
将这些bytes
存储在byte array
中,您就可以了。
答案 1 :(得分:0)
我是通过以下方式做到的:
txtHexString.Text="0x11, 0x01, 0x49, 0x4D, 0x41, 0x47, 0x45, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x53, 0x75, 0x6D, 0x6D, 0x61, 0x72, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00";
string[] namesArray = txtHexString.Text.Split(',');
byte[] abc= new byte [namesArray.Length];
for (int i = 0; i <= namesArray.Length - 1; i = i + 1)
{
abc[i] = Convert.ToByte(namesArray[i].Replace(" ", ""), 16);
}
这里,abc是所需的字节数组。