C++里面如果要把BYTE[]转化成String,除了一位一位的转化以外还有什么好方法吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++里面如果要把BYTE[]转化成String,除了一位一位的转化以外还有什么好方法吗?相关的知识,希望对你有一定的参考价值。

BYTE _data[800];
string strdate;
sprintf(Map_date,"%s",_data);
strdate=Map_date;

但会实际上还是一位一位转的,因为两个都是基础类型,所以。。。。
参考技术A String response = ""; byte[] bytes = response.getBytes(); for(byte b : bytes) System.out.print(b); 参考技术B 如果你整容中有个C罗那么你只有C罗的卡就加起了.. 参考技术C

1、Socket发送数据是以byte字节数组发送的,所以要把其他类型的数据转化成byte[]类型
 2、例子:

//string 转成 byte
string s = "Hello!!";
byte[] b = new byte[1024*1024];
b = System.Text.Encoding.ASCII.GetBytes(s);
   //当string含有中文字符时用 System.Text.Encoding.UTF8.GetBytes(s);
sock.Send(b);
 
//byte 转成 string
byte[] b1 = new byte[1024*1024*2];
sock.Receive(b1); 
string s1 = System.Text.Encoding.ASCII.GetString(b1);
   // System.Text.Encoding.UTF8.GetString(b1);


注意:
在把byte数组转换成string的时候,由于byte数组有2M的字节,所以转换后得到的字符串s1也会填充到2M的字符(用\\0来填充)
所以,为了避免这个问题,可以使用Receive返回的字节数来确定接收到byte的长度
    int length = sock.Receive(b1);
    string s1 = System.Text.Encoding.ASCII.GetString(b1, 0, length);
          //这样,s1就为byte实际的值

参考技术D 直接写 AnsiString不行?

(C#)把一个byte数组转换成一个二进制流!

DPFP.Template Template;
byte[] fingerPrintBytes =null;
Templates.Serialize(ref fingerPrintBytes);

我上面的fingerPrintBytes已经获取了数组数据,接着我上面的东西,怎么把fingerPrintBytes转成一个二进制流?
以及转换回来成DPFP.Template的方法!
或者还有其他更好的方法。。。? 提供满意答案者加分!
public class Template : Data

public Template();
public Template(Stream DataStream);


---------------------------------------------------------

public abstract class Data

protected byte[] _Data;

public Data();
public Data(Stream DataStream);

public byte[] Bytes get;
public int Size get;

public void DeSerialize(byte[] ArrayOfBytes);
public void DeSerialize(Stream DataStream);
public byte[] Serialize(ref byte[] ArrayOfBytes);
public Stream Serialize(Stream DataStream);

首先 byte[] 就是二进制流的。
你的意思是不是转换成二进制字符串?

将fingerPrintBytes 代入 bytesTest

strResult就是二进制字符串

//byte[]转为二进制字符串表示
byte[] bytesTest =new byte[]16,18,33;

string strResult=string.Empty;
string strTemp;
for(int i=0;i<bytesTest.Length;i++)

strTemp=System.Convert.ToString(bytesTest[i], 2);
strTemp =strTemp.Insert(0,new string('0',8-strTemp.Length));

strResult+=strTemp;
参考技术A 转换成流
MemoryStream stream = new MemoryStream(fingerPrintBytes);

你的DPFP.Template是什么对象

以上是关于C++里面如果要把BYTE[]转化成String,除了一位一位的转化以外还有什么好方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

C++ BYTE数组转字符串

c++中如何把string类型转化为float类型

c语言 二进制的byte数组转化为int数组

JAVA 与 C++ 数据类型转换 byte unsigned char

BYTE数据怎么转化成二进制字符串

c++中一个long类型数据转换成IP地址