C# 怎么将字符串转成二进制呢?如"你好",转成byte类型也可以。注意不要什么byte[]数组的形式。
3个回答
展开全部
首先我来告诉你,在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只能表示一个字节,所以肯定无法进行转换的。
在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,那么如果发送多字节时可以采用循环发送方式,单片机自行会处理。但从你的代码中不能看出具体的要求。但通信都是大同小异的。
展开全部
例如
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);
如毁罩裤有纤简疑闷悉问请追问
追问
你做的不错,但不是我最终想要的,你的是单个独立出来转换二进制,显然这样就失去了意义.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试试bitconvert类
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询