c# 我在c#textbox控件中输入数据转换为byte数组,要求byte[0]=00;
c#我在c#textbox控件中输入000000000005,怎样将这个字符串格式转换为byte数组类型要求byte[0]=00;byte[1]=00…………byte[5...
c# 我在c#textbox控件中输入000000000005 ,怎样将这个字符串格式转换为byte数组类型
要求byte[0]=00;byte[1]=00…………byte[5]=05;要能显示显示两个0
直接将textbox中输入的数据当作是16进制的来用 ,然后通过串口发送出去 所以要求举例byte[0]=00; 我在切割后convent.tobyte转换为byte数组 前面值显示一个0 而不是两个0 展开
要求byte[0]=00;byte[1]=00…………byte[5]=05;要能显示显示两个0
直接将textbox中输入的数据当作是16进制的来用 ,然后通过串口发送出去 所以要求举例byte[0]=00; 我在切割后convent.tobyte转换为byte数组 前面值显示一个0 而不是两个0 展开
展开全部
你弄错了,byte中没有什么两个0,05这种是十六进制字符串的表示,你只需要将字符串传入下面这个函数,将得到的数组发送出去就行了。
public static byte[] HexStringToByteArray(string s)
{
s = s.Replace(" ", "");
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
{
buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
}
return buffer;
}
public static byte[] HexStringToByteArray(string s)
{
s = s.Replace(" ", "");
byte[] buffer = new byte[s.Length / 2];
for (int i = 0; i < s.Length; i += 2)
{
buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
}
return buffer;
}
追问
您这个方法我试过 buffer[0]是等于0的;然后我这样我通过串口发送的时候发送出去报文格式是这样的吗00 00 00 00 00 05;是不是我发送的时候不一定非得按字节数组发送 也可以是string数组发送啊
追答
发送的时候只能发字节,如果你发的是0,对于对方来说也就是00(也就是说00实际上对方收到数据之后,再做一次byte转十六进制字符串,比如说你发的是十进制的10(即0A),那么对方收到这个byte之后,再转成十六进制字符串,才会是0A),你上面的000000000005
实际上相当于{0x00,0x00,0x00,0x00,0x00,0x05} 这样一个byte数组。
展开全部
string[0] = byte[0].Tostring().PadLeft(2, '0');//左侧不满2位用字符串0来补充,显示为:00
string[1] = byte[1].Tostring().PadLeft(2, '0');
string[2] = byte[2].Tostring().PadLeft(2, '0');
....以此类推
string5] = byte[5].Tostring().PadLeft(2, '0'); //-----显示为:05
string[1] = byte[1].Tostring().PadLeft(2, '0');
string[2] = byte[2].Tostring().PadLeft(2, '0');
....以此类推
string5] = byte[5].Tostring().PadLeft(2, '0'); //-----显示为:05
追问
因为要用串口发送所以必须是byte[0]=00,您这个是转换为string数组了,我必须要求byte数组中是两个0显示
追答
当我没回答过吧,你连最基础数据类型都不明白是怎么回事,还在这里和我说:必须要求byte数组中是两个0显示,你要明白:
int i = 0xFA;
实际就是250!你也没办法做到必须16进制
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不明白为什么非要转为byte数组,string数组不可以吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询