C# 怎么将字符串转成二进制呢?如"你好",转成byte类型也可以。注意不要什么byte[]数组的形式。

 我来答
百度网友66a8d48e5
2013-04-23 · TA获得超过7687个赞
知道大有可为答主
回答量:3002
采纳率:12%
帮助的人:3890万
展开全部
首先我来告诉你,在C#中的byte与SQL中的byte是不一样的。

在SQL中binary来表示的byte其实还是byte[]数组。在C#中将字符串转成二进制也是一件很容易的事,但你想用一个byte表示两个字节以上的东西么?

比如“你好”这个字符串,在Default与ANSI中每一个汉字要点两个字节,那么一个byte怎么可能表示四个字节呢?所以你使用byte[]是必须的。在Unicode系列中占用的字节更多,一般Utf-8占3个字节,而UTF-7与UTF-32,UTF-16中占用的也不是少数。所以只可能转换为byte[]。

不过,为了可读性,你可以转换为类似"AD98DF"等十六进制字符的字符串。

但这个转换过程必须先转成byte[],然后再由byte转换为十六进制的进符串。

byte[] bytes = Encoding.ANSI.GetBytes("你好");
sring result = bytes.ToString("XX");

这要转变方式还是很不错的。还可以使用lamabda表达式进行各种转换。

但是,byte只能表示一个字节,所以肯定无法进行转换的。
更多追问追答
追问
这两天在写协议,需要用到指令,而mscomm控件的OutPut方法,直接接收字符串不行,那该怎么解决呢.
网上原代码是这样的:
byte[] bytOut=new byte[1];
bytOut[0]=255;
axMSComm2.Output=bytOut;

如果指令255换成**1 5 0 0 12 1 C2@,请问怎么做?C语言我不会,但计算机通讯都是二进制,byte应该是可以解决的.
追答
一般情况下,我们向8位单片机发送数据时,由于8位单片的能力,我们每次只能发送一个byte,那么如果发送多字节时可以采用循环发送方式,单片机自行会处理。但从你的代码中不能看出具体的要求。但通信都是大同小异的。
shelher
2013-04-23 · TA获得超过6134个赞
知道大有可为答主
回答量:3609
采纳率:100%
帮助的人:6249万
展开全部

例如

   
string input = "hello";
byte[] output =Encoding.Default.GetBytes(input);
string outstr = string.Empty;
for (int i = 0; i < output.Length; i++)
{
outstr+=Convert.ToString(output[i], 2).PadLeft(8, '0');
}
MessageBox.Show(outstr);

如有疑问请追问

追问
你做的不错,但不是我最终想要的,你的是单个独立出来转换二进制,显然这样就失去了意义.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iwannar
2013-04-23 · TA获得超过328个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:121万
展开全部
试试bitconvert类
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式