第一次用C#,什么都不会,呵呵//定义一个缓冲区
Byte [] MyBuffer = Byte[1024];现在的问题是我如何把整数、浮点数、字符串等数据拷进去。
然后再把数据拷出来,以前在C++都是用memcpy或者CopyMemory下来拷的不知道如何操作?
Byte [] MyBuffer = Byte[1024];现在的问题是我如何把整数、浮点数、字符串等数据拷进去。
然后再把数据拷出来,以前在C++都是用memcpy或者CopyMemory下来拷的不知道如何操作?
调试欢乐多
string str = "abc";
for(int i = 0;i<3;i++)
{
MyBuffer[i] = (byte)str[i];
} for(int i=0;i<3;i++)
{
Response.Write(MyBuffer[i]);
}
如果确实需要,可以考虑用unsafe代码。
int i = 10;
MemoryStream meStm = new MemoryStream();
System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
//序列化
formatter.Serialize(meStm,i);
byte[] buffer = meStm.ToArray();
//反序列化
int j = (int)formatter.Deserialize(new MemoryStream(buffer));MessageBox.Show(j.ToString());
byte[] b = System.Text.Encoding.ASCII.GetBytes(str.ToCharArray());
读出来:
string str = System.Text.Encoding.ASCII.GetString(b);
MemoryStream meStm = new MemoryStream();
System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
//序列化
formatter.Serialize(meStm,i);
byte[] buffer = meStm.ToArray();
//反序列化
int j = (int)formatter.Deserialize(new MemoryStream(buffer));
比如
先是一段字符串,再是几个整数,然后又是几个浮点数,接着又有一段字符串。
如何来操作这段数据,真是烦阿,C#好像对这种问题的处理不是很方便阿,
还是我的思维还C/C++那里。
在C++中
typedef struct
{
int iFlag;
char buf[50];
}TMyRecord;//自定义结构体char* buf = new char[1024];//缓冲块
char sHead[5] = "HEAD";//第一个数据
int iLen; //第二个数据
TMyRecord myData; //第三个数据//写入缓冲
memcpy(buf, sHead, strlen(sHead));
memcpy(buf+4, &iLen, sizeof(int) );
memcpy(buf+4+sizeof(int), &myData, sizeof(TMyRecord));char sReadHead[5];
int iReadLen;
TMyRecord myReadData;从缓冲中读入
memcpy(sHead, buf, strlen(sHead));
memcpy(&iLen,buf+4, sizeof(int) );
memcpy(&myData, buf+4+sizeof(int), sizeof(TMyRecord));
//-------------------------------------------------------
这段程序用C#怎么写?
int pos = 0;
byte [] temp = BitConvert.GetBytes(myData.iFlag));
Array.Copy(temp, 0, buf, pos, temp.Length);
pos += temp.Length;
Array.Copy(myData.buf, 0, buf, pos, myData.buf.Length);
没有仔细研究过,不过应该是不错的解决方案
tiaoci(我挑刺,我快乐)
的方法可以!