Я определил структуру в C # и использую Marshal, чтобы заполнить ее данными из
файл. Первый атрибут заполняется правильно, но второй атрибут заполняется азиатским символом вместо текста, который явно находится в файле. Соответствующее содержимое файла (первые 14 символов):
Iq? DANAE_FILE
Структура определяется как:
[StructLayout(LayoutKind.Explicit)]
struct DANAE_LS_HEADER
{
[FieldOffset(0)]
public float version;
[FieldOffset(4)]
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public char[] ident;
}
Код для чтения файла (levelData.bytes - это байты, считанные из файла):
int size = Marshal.SizeOf(typeof(DANAE_LS_HEADER));
IntPtr ptr = Marshal.AllocHGlobal(size);
Marshal.Copy(levelData.bytes, 0, ptr, size);
DANAE_LS_HEADER o = (DANAE_LS_HEADER)Marshal.PtrToStructure(ptr,
typeof(DANAE_LS_HEADER));
Атрибут «version» в структуре читается правильно (1.44), но атрибут «ident» читается как 䅄.
Есть идеи, почему это так и что я могу с этим поделать? Я, возможно, могу ссылаться на полный файл, если это необходимо.