我目前正在利用。
我采用这门课程的每一部分,并用BinaryWriter书写。 由于C++申请阅读了该双亲文件,支持包装材料,因此双手文件可以直接装上。
现在,我已经要求处理一致性问题,因为新的申请已经消失,无法支持包装的建筑。 如何最佳地将C#类转换成双轨,将其出口为二 by和四 alignment。
用户可以选择一致性。
我目前正在利用。
我采用这门课程的每一部分,并用BinaryWriter书写。 由于C++申请阅读了该双亲文件,支持包装材料,因此双手文件可以直接装上。
现在,我已经要求处理一致性问题,因为新的申请已经消失,无法支持包装的建筑。 如何最佳地将C#类转换成双轨,将其出口为二 by和四 alignment。
用户可以选择一致性。
在任何语文配对的物体的序列化中,不应成为一个问题,因为你事先知道有多少数据正在撰写和阅读。
例如,采取以下步骤:
struct data
{
char c;
unsigned int i;
double d;
}
视编者如何保存记忆,这种记忆中的位置从13到20年不等(包装——32比照),但记忆中却排出。 就磁盘布而言,你(假定是双筒)总是要写:
因此,当对方读到时,无论它是否是“灰色”还是“C#”,还是应当做以下工作:
这在很大程度上是坦率的解决办法。 如果语言和结构之间的可移动性是个问题,那么你就永远不应依赖以任何语言书写结构。
您不妨考虑不要将<代码>tructs上载到记忆中。 只是读一下的是帝国主义的一步。 类似:
struct A {
uint8_t aByte;
uint32_t aDWord;
uint16_t aWord;
};
void serialize(FILE* fp, A const& aStruct) {
fwrite(&aStruct.aByte, sizeof(aStruct.aByte), 1, fp);
fwrite(&aStruct.aDWord, sizeof(aStruct.aDWord), 1, fp);
fwrite(&aStruct.aWord, sizeof(aStruct.aWord), 1, fp);
}
void deserialize(FILE* fp, A& aStruct) {
fread(&aStruct.aByte, sizeof(aStruct.aByte), 1, fp);
fread(&aStruct.aDWord, sizeof(aStruct.aDWord), 1, fp);
fread(&aStruct.aWord, sizeof(aStruct.aWord), 1, fp);
}
而不是:
void serialise(FILE* fp, A const& aStruct) {
fwrite(&aStruct, sizeof(aStruct), 1, fp);
}
void deserialise(FILE* fp, A& aStruct) {
fread(&aStruct, sizeof(aStruct), 1, fp);
}
第一个例子取决于结构包装规则,而第二个例子就是这种情况。 我建议使用斜线。 多数语言(不肯定是C#)给你某种读写方式,使你能够读写所有序列化/代号化成员,而不是单体记忆组,包装/包裹问题消失。
考虑在作者方面使用C++图书馆。 如果读者一方受限制,则在未管理的C++中建立具有相同记忆结构,并将其丢到双亲档案中。 也许,你不得不使用第Ppragma 包装(1),去除缺省包装,在贵方结构要素之间划出一些术语,以便与读者方的配对相类似。 Don tabes on endianness. 然后,仅用DllImport或C++/CLI(这是一个塔特问题)向作者图书馆打电话。