C# Byte[]转换成string的问题...高手来起...在线=回答...
发布网友
发布时间:2022-04-24 13:21
我来回答
共5个回答
热心网友
时间:2023-10-14 06:38
byte数组不一定能转换为字符串。
byte数组是一个物理的存贮概念,而字符串是有文化意义的。因此byte到string的转换需要指定一种编码方式。
但是,图片里的bytes根本就不是一种“文字”,你如何能把它们转换为字串?
图片里的bytes是对像素的存贮,是二进制的数据。
如果非要转换为文字,也有办法。在通过电子邮件来传送文件时,由于电子邮件协议一开始只考虑了文字的传送,而不支持二进制数据,因此,对于二进制数据,就有人发明了多种把二进制数据编码为普通文本,以及从这种文本编码转换回二进制数据的方案。
其中用得最广泛的,就是base64编码了。这也正是你需要的答案。
方案就是:把你的byte array用Convert.ToBase64String()方法转换为文本,这种文本看起来是没有意义的,但是它是纯英文文本,可以保存在text字段里。
需要恢复时,就用Convert.FromBase64String(),从文本转回到二进制数据。
热心网友
时间:2023-10-14 06:38
你这里是不能用 filetext = System.Text.Encoding.Default.GetString(aa)这样的方法转字符串的。。。
那个例子来说。
加入你的aa中的内容是aa={65,66,67,00,65};
你用上面的转出来的字符串就是"ABC"
这种转换方法是将每一个元素转成对应的字符。。。而字符串的结束符就刚好是\00所以就会出现你说的那种,不会转换完全,在\00之后的内容都被截断了。。。
你这种的问题的解决办法是
想办法让filetext中的内容是"6566670065";这个样子。。。
你可以用
string s;
foreach(byte b in aa)
{
s=b.ToString();
if(s.Length!=2)
{
s="0"+s;
}
filetext+=s;
}
这样得到的结果就是"6566670065";
要使用的时候,就是2位一截转存到byte[]中就可以了。。。
byte[] aa=new byte[filetext/2];
for(int i=0;i<filetext/2;i=i++)
{
aa[i]=byte.Parse(filetext.SubString(i*2,2));
}
这样得回的结果就是aa={65,66,67,00,65};了。。。
热心网友
时间:2023-10-14 06:38
用System.Text.Encoding.ASCII.GetString试试
Default默认的一般是unicode
如果这个解决了,后面的问题就一并解决了
至于第四个问题,你去了解一下BMP位图文件的格式就明白了。
热心网友
时间:2023-10-14 06:39
这个问题,我也遇到过,好像不行,我就是从图片流转化为二进制数组,在还原为流,显示图片都不行。何况字符串
热心网友
时间:2023-10-14 06:40
直接把字节数组存到text字段不就行了
c# byte数组转string
首先要先知道你的byte数组是基于什么编码方式生成的,然后才能根据这种编码方式转回string 例:byte[] bytes = System.Text.Encoding.UTF8.GetBytes("要转换成byte数组的字符串");//这里根据utf-8的编码形式将字符串转换成byte流,如果想转换回正确的字符串,也必须是utf-8的编码,否则转换成功也是乱码...
c#怎么将byte数组转成string
首先要先知道你的byte数组是基于什么编码方式生成的,然后才能根据这种编码方式转回string 例:byte[] bytes = System.Text.Encoding.UTF8.GetBytes("要转换成byte数组的字符串");//这里根据utf-8的编码形式将字符串转换成byte流,如果想转换回正确的字符串,也必须是utf-8的编码,否则转换成功也是乱码...
C#如何把byte转换为String类型输出的?
byte b = 34;// 转换成十进制格式表示的字符串string s = b.ToString();Console.WriteLine(s); // 转换成十六进制格式表示的字符串s = b.ToString("x");Console.WriteLine("0x{0}", s);【例2】byte[] array = { 1, 2, 3, 4, 5, 6, 7 };string s = string.Empty;foreach ...
c# byte [] 转string,怎么转
byte[] bt = new byte[] { 10, 11, 33, 44, 2 };string str=string.Join(",",bt.Select(t=>t.ToString()).ToArray());Console.Write(str);
C#中如何将byte[]转化为字符串!!!
C#中将byte[]转化为字符串可以参考以下的代码://字符串转byte stringStringMessage="HowAreyou?";Console.WriteLine("{0}",StringMessage);System.Text.ASCIIEncodingASCII=newSystem.Text.ASCIIEncoding();Byte[]BytesMessage=ASCII.GetBytes(StringMessage);//byte转字符串 Byte[]BytesMessage;System....
c#怎样将byte数组转化为string
c#中byte数组转化char数组方法如下://定义一个byte数组,并初始化 byte[]b=new byte[5]{0x01,0x02,0x03,0x04,0x05};//用encoding的ascii方法的getchars函数依次取得b并转换成char数组。char[]c=encoding.ascii.getchars(b);
c#中如何将byte数组转换成string从而在textbox中显示出来?
1.byte[] byteArray = System.Text.Encoding.Default.GetBytes( str );反过来也是一样,把byte[]转成string:string str = System.Text.Encoding.Default.GetString( byteArray );其实,在System.Text.Encoding class中,还有很多其它有用的方法,像GetChars,从一个byte[]转成一个char[],等等,...
C#字节数组转换string长度问题
string friendNumber = "4473117";byte[] qqNumberBytes = Encoding.UTF8.GetBytes( friendNumber );byte[] msgBody = new byte[ 20 ];qqNumberBytes.CopyTo( msgBody, 0 );MessageBox.Show( Encoding.UTF8.GetString( msgBody ) );PS:如果统一使用UTF32的话,你的20个字节恐怕不够装,因为...
C#字节数组转换string长度问题
字符在c#中很容易转化成字节数组的!但字符串可不同的编码下有不同的编码方式,而字节就是一个字节,在任何编码下都是相同的,所以在转化之前我们必须先了解string是在什么样的编下。如果是在utf-8编下的情况下,我们可以使用 byte[]buffer = encoding.utf8.getbytes("要转化的字符串");如果事先...
c# byte[] 到string
{ string x="";byte[] b = new byte[] { 0x1f, 0x1e, 0xcc };for (int i = 0; i < b.Length; i++){ short c= Convert.ToInt16(b[i]);x += From10To16(c) + "-";} if (MessageBox.Show(x.TrimEnd('-')) == DialogResult.OK) { this.Close(); };} } } ...