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
展开
 我来答
syht2000
高粉答主

2013-03-01 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
你弄错了,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;
}
追问
您这个方法我试过  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数组。
FabKiller
2013-03-01 · TA获得超过586个赞
知道小有建树答主
回答量:676
采纳率:0%
帮助的人:478万
展开全部
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
追问
因为要用串口发送所以必须是byte[0]=00,您这个是转换为string数组了,我必须要求byte数组中是两个0显示
追答
当我没回答过吧,你连最基础数据类型都不明白是怎么回事,还在这里和我说:必须要求byte数组中是两个0显示,你要明白:
int i = 0xFA;
实际就是250!你也没办法做到必须16进制
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syyongyousoft
2013-03-01 · TA获得超过529个赞
知道小有建树答主
回答量:85
采纳率:100%
帮助的人:75.6万
展开全部
不明白为什么非要转为byte数组,string数组不可以吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式