【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.pswp.cn/bicheng/90654.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90654.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90654.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pytest 測試報告生成方案有哪些?

在 pytest 中,除了 Allure 和 HTMLTestRunner,還有許多其他生成測試報告的方法和插件。以下是一些常用的方案及其特點:1. pytest-html(官方推薦)特點:輕量級、易集成,生成獨立的 HTML 報告。安裝…

Unity中EditorPrefs與PlayerPrefs對比分析

Unity中EditorPrefs與PlayerPrefs對比分析 EditorPrefs與PlayerPrefs是Unity引擎中用于數據持久化的兩個核心類,分別用于于編輯器擴展與游戲運行時場景。以下從設計目標、存儲位置、數據類型、生命周期、安全性、使用場景等方面展開對比,并結合代碼示例說…

藍光中的愧疚

藍光中的愧疚活動結束那晚,深圳的空氣吸飽了水汽,沉甸甸地壓在胸口。我站在西鄉社區活動中心冰涼的玻璃門外,目送著最后一個離開的王老師。她關掉門廳的燈,電子門鎖合攏時發出輕微卻尖銳的“嘀”聲,像一根細針扎在我緊…

Linux: network: wireshark: esp attempt to detec null-encrypted esp payloads

最近看到一個pcap文件,里面有esp協議包,而且是明文/沒有加密的消息,為什么wireshark沒有將esp上層的tcp/sip消息沒有解出來。 類似于Info列只有ESP的信息。后來選中了協議選項里的:attempt to detect/decode NULL encrypted ESP p…

10分鐘搭建腳手架:Spring Boot 3.2 + Vue3 前后端分離模板

10分鐘搭建腳手架:Spring Boot 3.2 Vue3 前后端分離模板一、項目結構設計二、后端搭建(Spring Boot 3.2)1. 快速初始化(使用 Spring Initializr)2. 核心配置application.yml跨域配置 CorsConfig.java3. 安全配置Secur…

【軌物方案】分布式光伏電站運維升級智能化系列:老電站的數智化重生

自2010年分布式光伏在國內興起以來,十余年間,市場裝機容量已實現飛躍式增長。長期以來,傳統的人工巡查和抄表模式是它們日常運維的主要手段。然而,隨著電站數量的激增和設備的老化,由此導致的事故頻發,使得…

RAG 技術深度面試題:架構、優化與實踐應用

1. RAG 基礎架構設計 問題:對比單階段檢索(Single-stage Retrieval)與兩階段檢索(Two-stage Retrieval)在 RAG 系統中的架構差異,說明在企業知識庫場景下為何優先選擇兩階段檢索? 答案&#xff…

yolov8通道級剪枝講解(超詳細思考版)

為了提升推理速度并降低部署成本,模型剪枝已成為關鍵技術。本文將結合實踐操作,講解YOLOv8模型剪枝的方法原理、實施步驟及注意事項。 雖然YOLOv8n版本本身參數量少、推理速度快,能滿足大多數工業檢測需求,但谷歌研究表明&#x…

JavaSE:隨機數生成

隨機數在游戲開發、密碼學、模擬測試等場景中扮演著關鍵角色。本文將深入探討Java中兩種主流的隨機數生成技術:Random類和Math.random()方法,并解析背后的類與對象概念,助你全面掌握隨機數生成的核心機制。一、隨機數生成的兩大技術 Java提供…

Android 持久化存儲原理與使用解析

一、核心存儲方案詳解1. SharedPreferences (SP)使用方式:// 獲取實例 SharedPreferences sp getSharedPreferences("user_prefs", MODE_PRIVATE);// 寫入數據 sp.edit().putString("username", "john_doe").putInt("login_cou…

無 sudo 權限的環境下將 nvcc (CUDA Toolkit) 安裝到個人目錄 linux

要在無 sudo 權限的環境下將 nvcc 安裝到 home 個人目錄,你可以手動安裝 CUDA Toolkit 到你的 $HOME 目錄,只需以下幾步即可使用 nvcc 編譯 CUDA 程序。 ? 步驟:本地安裝 CUDA Toolkit(含 nvcc) 下載 CUDA Toolkit Ru…

從指標定義到AI執行流:衡石SENSE 6.0的BI PaaS如何重構ISV分析鏈路

一、痛點:ISV行業解決方案的“三重斷鏈”傳統ISV構建行業分析模塊時面臨的核心挑戰:指標定義碎片化:客戶A的“銷售額”含稅,客戶B不含稅,衍生指標無法復用;分析-執行割裂:發現庫存異常后需人工導…

構建跨平臺遠程醫療系統中的視頻通路技術方案探究

一、遠程醫療走向日常化,音視頻能力成為關鍵基礎設施 隨著醫療數字化與分級診療體系的不斷演進,遠程醫療正從試點探索階段,逐步邁向常態化、標準化應用。從縣域醫院遠程問診、基層醫療協作,到大型三甲醫院的術中協同、專科教學直…

Blackbox Exporter Docker 安裝配置,并與 Prometheus 集成

1. 創建配置文件目錄bashmkdir -p ~/docker/blackbox/config cd ~/docker/blackbox2. 創建 Blackbox Exporter 配置文件 config/blackbox.ymlyamlmodules:http_2xx: # HTTP 可用性檢測(響應 2xx/3xx 狀態碼)prober: httphttp:valid_http_versions: ["HTTP/1.1", &qu…

杰理通用MCU串口+AT指令+485通訊工業語音芯片

一、概述 在現代智能設備與自動化系統中,語音交互功能日益普及,通用 MCU 語音芯片作為核心組件,承擔著關鍵的語音處理任務。其強大的功能不僅體現在語音合成、識別等方面,還包括高效的通信能力。串口 AT 指令 485 通訊模式為通用…

Krpano 工具如何調節全景圖片切割之后的分辨率

文章目錄概要第一步1.1 復制一下這個文件中的key ,打開 krpano Tools.exe第二步 修改切片之后的分辨率修改前的效果修改后的效果概要 前端渲染全景圖模擬3D場景 Krpano 工具 獲取到后的默認圖片分辨率是2048*2048的,如果覺得分辨率低了可以自行在工具中…

物聯網十大應用領域深度解析

一、智能物流技術基礎:RFID、無線傳感器網絡、互聯網與運籌學、供應鏈管理理論結合 應用場景:倉儲管理:RFID標簽實現庫存實時監控,自動補貨系統降低缺貨率。配送優化:通過GPS與物聯網數據分析規劃最優路徑,…

ElasticSearch基礎數據查詢和管理詳解

目錄 一、 ElasticSearch核心概念 1. 全文搜索(Full-Text Search) 2. 倒排索引(Inverted Index) 3. ElasticSearch常用術語 3.1 映射(Mapping) 3.2 索引(Index) 3.3 文檔&…

SSE與Websocket有什么區別?

SSE(Server-Sent Events)和WebSocket都能實現服務器與客戶端的實時通信,但它們在協議設計、應用場景和技術特性上有明顯差異。以下從多個維度對比兩者的區別: 1. 協議基礎 SSE 基于HTTP協議,是HTTP的擴展。使用單向通…

力扣Hot100疑難雜癥匯總

寫在前面 這一篇博客主要用來記錄力扣Hot100中我反復刷,但又反復錯的難題,為了防止秋招手撕的時候尬住,寫這篇博客記錄一下那些容易遺忘而且對我來說難度較大的題目。后面復習的時候重點對著這個名單來刷題。 二叉樹部分 114. 二叉樹展開為…