当前位置: 首页 > java >正文

【09】C#入门到精通——C# 结构体对齐 与 常用数据 对应关系

文章目录

  • 1 C# 结构体对齐
    • 1.1 默认对齐方式
    • 1.2 节对齐方式设置
    • 1.3 偏移量设置
  • 2 C#与C/C++之间类型的对应关系

1 C# 结构体对齐

1.1 默认对齐方式

struct默认对齐方式,结构体长度必须是,最大成员长度的整数倍,所以下面结构体大小是 24
(实际占用大小为20)

using System;
using System.Runtime.InteropServices;namespace CdllTest
{class Program{static void Main(string[] args){TestStruct ts = new TestStruct();int len = Marshal.SizeOf(ts);Console.WriteLine(len);Console.ReadKey();}}public struct TestStruct{//默认对齐方式,struct长度必须是,最大成员长度的整数倍,所以下面结构体大小是 24 public byte id;//0~1public int width;//4~8public long height;//8~16public int num1;//16~20 }
}

在这里插入图片描述

1.2 节对齐方式设置

设置1字节对齐方式

    [StructLayout(LayoutKind.Sequential,Pack = 1)]//指定1字节对齐public struct TestStruct{public byte id;//1public int width;//4public long height;//8public int num1;//4 }

在这里插入图片描述

1.3 偏移量设置

using System;
using System.Runtime.InteropServices;namespace CdllTest
{class Program{static void Main(string[] args){TestStruct ts = new TestStruct();int len = Marshal.SizeOf(ts);Console.WriteLine(len);Console.ReadKey();}}//指定偏移量[StructLayout(LayoutKind.Explicit)]public struct TestStruct{[FieldOffset(0)]//偏移字节数0public byte id;[FieldOffset(10)]//偏移字节数10public int width;[FieldOffset(15)]//偏移字节数15public long height;[FieldOffset(40)]//偏移字节数40public int num1; // struct长度必须是,最大成员长度的整数倍,所以结构体大小是 48 }
}

在这里插入图片描述

2 C#与C/C++之间类型的对应关系

在这里插入图片描述

http://www.xdnf.cn/news/16241.html

相关文章:

  • CF每日5题(1500-1600)
  • node.js中的path模块
  • 技嘉z370主板开启vtx
  • windows11通过wsl安装Ubuntu到D盘,安装docker及宝塔面板
  • 【STM32】FreeRTOS 任务的删除(三)
  • 《 java 随想录》| 数组
  • Java学习日记_廖万忠
  • 支持OCR和AI解释的Web PDF阅读器:解决大文档阅读难题
  • uni-appDay02
  • #来昇腾学AI 【十天成长计划】大模型LLM Prompt初级班
  • Java学习----工厂方法模式
  • 深入理解 eMMC RPMB 与 OP-TEE 在 Linux 系统中的应用开发
  • day62-可观测性建设-全链路监控zabbix+grafana
  • 爬虫算法原理解析
  • Windows环境下 Go项目迁移至Ubuntu(WSL) 以部署filebeat为例
  • MinIO 版本管理实践指南(附完整 Go 示例)
  • MySQL深度理解-MySQL索引优化
  • 二分查找----5.寻找旋转排序数组中的最小值
  • Android Activity与Fragment生命周期变化
  • 谈谈ArrayList与Vector的理解?
  • NOTEPAD!NPCommand函数分析之comdlg32!GetSaveFileNameW--windows记事本源代码分析
  • TechGPT3部署
  • 【STM32】FreeRTOS 任务的创建(二)
  • 深入理解大语言模型生成参数:temperature、top\_k、top\_p 等全解析
  • EasyExcel 模板导出数据 + 自定义策略(合并单元格)
  • vue 项目中 components 和 views 包下的组件功能区别对比,示例演示
  • AudioLLM 开源项目了解学习
  • 网络编程——聊天程序实现
  • 基于arduino uno r3主控的环境监测系统设计-2
  • 后端分页接口实现