用C#把MySQL的数据读出,数据类型在MySQL下为char(15) binary, 在C#下读出自然是Object类型.
这15字节的数据是以下结构体的数据:(C版本)
typedef struct _ITEM
{
unsigned long ID;
unsigned int BaseIDx;
unsigned char pp;
unsigned char ttribx[5];
unsigned char Status;
} ITEM;
求教高手:
1.如何把这个Object的15字节的数据分离出来.
2.如果ttribx是个Big5编码的字符串,如何处理比较好,因为.net默认为Unicode.
这15字节的数据是以下结构体的数据:(C版本)
typedef struct _ITEM
{
unsigned long ID;
unsigned int BaseIDx;
unsigned char pp;
unsigned char ttribx[5];
unsigned char Status;
} ITEM;
求教高手:
1.如何把这个Object的15字节的数据分离出来.
2.如果ttribx是个Big5编码的字符串,如何处理比较好,因为.net默认为Unicode.
{
public long ID;
public int BaseIDx;
public char pp;
public char ttribx;
public char Status;
}Item item = new Item();
// 假设你的二进制数据已经放在byte[] buffer里
item.ID = BitConverter.ToInt64(buffer, 0);
item.BaseIDx = BitConverter.ToInt32(buffer, 8);
item.pp = buffer[12];
item.ttribx = buffer[13]
item.Status = buffer[14]
{
public long ID;
public int BaseIDx;
public string pp;
public char ttribx;
public char Status;
}Item item = new Item();
// 假设你的二进制数据已经放在byte[] buffer里
item.ID = BitConverter.ToInt32(buffer, 0);
item.BaseIDx = BitConverter.ToInt32(buffer, 4);
item.pp = Encoding.UTF8.GetString(buffer,8,5);
item.ttribx = buffer[13];
item.Status = buffer[14];
在次感谢
Object yourobject = (Object)str;
byte[] xx=(byte[])yourobject;
你执行的时候会出现异常.
string str = "lalalala";
Object yourobject = (Object)str;
byte[] xx= Encoding.UTF8.GetBytes(str);对于复杂的object,你可以直接用二进制序列化:
MyObject obj = new MyObject(); // 你的类MyObject需要[Serializable]
obj.n1 = 1;
obj.n2 = 24;
obj.str = "一些字符串";
IFormatter formatter = new BinaryFormatter();
Stream stream = new MemoryStream();
formatter.Serialize(stream, obj);
byte[] xx = stream.GetBuffer();
stream.Close();
string str = "asdfghjk";
Object obj = (Object)str;IFormatter formatter = new BinaryFormatter();
Stream stream = new MemoryStream();
formatter.Serialize(stream, obj);
byte[] xx = ((MemoryStream)stream).GetBuffer();
stream.Close();
会序列为长度为256的byte数组!多数为0,还有一些无用的前后缀,比如255
谢谢楼上,不过,好像你还是把数组位置弄错了.不过我知道怎么解决了.还有一个问题是,如何把Object 类型的数据分裂成byte[]?
在次感谢
System.text.encoding.default.getbytes((String)yourobject)
是string
风之泪是你的同事?同学?还是马甲?早先没仔细看!我昨天晚上不是给出测试结果了么?就在你的那个帖子里!