结构体中包含不定长域转换成字节数组的问题(Struct To ByteArray)
ncluj 2004-10-22 01:49:33 大家都知道,结构体(自定义数据类型)如果每个域都是定长域,或者说都是简单数据类型的话,结构体的内部存储是按域的顺序分配字节空间保存的,但是,如果里面包含不定长字符串(引申开来,如果包含对象)的话,结构体里面只保存一个指向该字符串的指针,那么在转换成ByteArray的时候,就不能使用CopyMemory直接处理的,要把变长字符串单独处理。
而这个处理,是要根据结构体的具体结构来处理的,如果在一个有着大量此类数据的情况下,写这种一个一个字节数过去的程序是很繁琐且容易出错的过程,所以,想请教达人给出一个这种通用的函数,来完成此类功能。
Public Type MyStruct
ID As Byte
Name As String * 10
Memo As String
End Type
如果Memo是定长域,例如String * 10 ,那么一个结构体的长度就是21,按顺序排放这三个域
但是Memo使用变长字符串,这个结构体里面第12字节开始就不是Memo的内容了,我需要做一个函数,能够把Memo域的字符串转换成Byte代替他在结构体里面的那个指针。
谢谢大家!
:)