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;
...全文
92 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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(结构名)是否等于各字段长度和,还是要附加一些类信息

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧