c语言中结构中有数组如何转化为c#表达?

xudu 2004-05-03 03:33:20
如:
typedef struct tagJPEGDQT_16BITS
{
WORD segmentTag; //DQT段标记,必须为0xFFDB
WORD length; //段长度,这里是0x8300
BYTE tableInfo; //量化表信息
WORD table[64]; //量化表(16 bits)<-怎么办?
}JPEGDQT_16BITS;
...全文
29 8 点赞 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xudu 2004-05-10
谢谢大家热心,我已经自己从msdn找到了该方法。同样还有字节对齐问题(Pack=1),但我还是感谢turnmissile(会翻跟头的导弹)等热心人。
实际上这是我一系列问题中的一个,也是有关结构的问题,怎么把上述结构变量写入文件,一般情况是写byte[],但C#和C++,C/C++中使用文件读写,一般*buffer,我只要取&结构变量地址即可,但C#不同,结构变量是值类型,而数组是引用类型,怎么转化。我现在是参考zdnet上的一片文章,即利用Marshal.PtrToStructure和Marshal.StructureToPtr
来转换结构变量和byte[],但这是一个深拷贝操作,对性能还是要造成一定影响,大家有没有其他方法?
  • 打赏
  • 举报
回复
sandsboy 2004-05-07
public struct JPEGDQT_16BITS
{
ushort segmentTag; //DQT段标记,必须为0xFFDB
ushort length; //段长度,这里是0x8300
byte tableInfo; //量化表信息
ushort table[64]; //量化表(16 bits)<-怎么办?
}
  • 打赏
  • 举报
回复
vzxq 2004-05-07
关注,学习。UP
  • 打赏
  • 举报
回复
Brunhild 2004-05-07
同意turnmissile(会翻跟头的导弹)
  • 打赏
  • 举报
回复
turnmissile 2004-05-07
[ StructLayout( LayoutKind.Sequential )]
typedef struct tagJPEGDQT_16BITS
{
WORD segmentTag; //DQT段标记,必须为0xFFDB
WORD length; //段长度,这里是0x8300
BYTE tableInfo; //量化表信息
[ MarshalAs( UnmanagedType.ByValArray, SizeConst=64 )]
WORD[] table; //量化表(16 bits)<-怎么办?
}JPEGDQT_16BITS;


  • 打赏
  • 举报
回复
Brunhild 2004-05-07
to:sandsboy(沙滩男孩)
你实际上是在结构中定义一个指针,而turnmissile(会翻跟头的导弹),是定义一个可以容纳64个WORD的区域。我想楼主需要的应该是后者
  • 打赏
  • 举报
回复
popohei 2004-05-04
C#中的结构是非引用的类
struct tagJPEGDQT_16BITS
{
WORD segmentTag; //DQT段标记,必须为0xFFDB
WORD length; //段长度,这里是0x8300
BYTE tableInfo; //量化表信息
WORD table[64]; //量化表(16 bits)<-怎么办?
};
  • 打赏
  • 举报
回复
xudu 2004-05-04
关键是C#中没用静态数组,
sizeof(结构名)是否等于各字段长度和,还是要附加一些类信息
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2004-05-03 03:33
社区公告

让您成为最强悍的C#开发者