」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 64 位元機器上安全地將指標轉換為整數?

如何在 64 位元機器上安全地將指標轉換為整數?

發佈於2024-12-23
瀏覽:760

How Can I Safely Convert a Pointer to an Integer on 64-Bit Machines?

將指標轉換為整數:針對64 位元機器重新檢視

將指標轉換為整數:針對64 位元機器重新檢視

void function(MESSAGE_ID id, void* param) {
  if (id == FOO) {
    int real_param = (int)param;
    // ...
  }
}

void function(MESSAGE_ID id, void* param) { 如果(id == FOO){ int real_param = (int)param; // ... } }

採用更新的鑄造技術的解決方案

#include 

void *p;
auto i = reinterpret_cast<:uintptr_t>(p);

#include 無效*p; auto i = reinterpret_cast<:uintptr_t>(p);

選擇正確的資料型別

// C  11
std::uintptr_t i;

// C  03
extern "C" {
#include 
}
uintptr_t i;

// C99
#include 
uintptr_t i;

// C 11 std::uintptr_t 我; // C 03 外部“C”{ #include } uintptr_t 我; // C99 #include uintptr_t i;

使用正確的轉換運算子

// C  11
auto i = reinterpret_cast<:uintptr_t>(p);

// C  03
uintptr_t i = reinterpret_cast(p);

// C
uintptr_t i = (uintptr_t)p;

// C 11 自動 i = reinterpret_cast<:uintptr_t>(p); // C 03 uintptr_t i = reinterpret_cast(p); // C uintptr_t i = (uintptr_t)p;How Can I Safely Convert a Pointer to an Integer on 64-Bit Machines?

最新教學 更多>
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-12-23
  • 為什麼在 Go 中將 `uint8` 轉換為 `int8` 會導致意外行為?
    為什麼在 Go 中將 `uint8` 轉換為 `int8` 會導致意外行為?
    從uint8 到int8 的轉換引起的混亂在Go 中將uint8 轉換為int8 可能會導致意外行為,如下所示範例:package main import ( "fmt" ) func main() { a := int8(0xfc) // Compile err...
    程式設計 發佈於2024-12-23
  • 如何使用 JavaScript 重新載入網頁?
    如何使用 JavaScript 重新載入網頁?
    使用JavaScript 讓頁面煥然一新由於各種原因(從刷新過時的內容到重置表單),可能需要重新加載網頁。 JavaScript 提供了一系列選項來無縫完成此任務。 JavaScript 1.2 及更高版本現代瀏覽器的首選方法是利用location.reload() 函數:簡潔性:location....
    程式設計 發佈於2024-12-23
  • C++標準函式庫頭檔如何保證包含其他頭檔或在不明確包含的情況下提供特定功能?
    C++標準函式庫頭檔如何保證包含其他頭檔或在不明確包含的情況下提供特定功能?
    具有保證包含的C 標準庫中的標頭在大多數情況下,C 標準庫標頭具有未指定的包含關係。但是,也存在例外情況,即特定標頭保證包含其他標頭或提供某些功能而不包含其他標頭。 保證包含特定標頭的標頭: 包含初始化程序列表() by: 實用程式()字串()陣列()出隊()轉送清單()列表()向量()映射()集合...
    程式設計 發佈於2024-12-23
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-12-23
  • 重構 ReadmeGenie
    重構 ReadmeGenie
    介绍 本周我的任务是重构 ReadmeGenie。如果您刚刚来到这里,ReadmeGenie 是我的开源项目,它使用 AI 根据用户输入的文件生成自述文件。 最初,我的想法是,“该程序运行良好。从第一天起我就一直以有组织的方式开发它......那么为什么要改变它呢?” 好吧,在从该...
    程式設計 發佈於2024-12-23
  • 如何依自然順序對包含數字的字串陣列進行排序?
    如何依自然順序對包含數字的字串陣列進行排序?
    自然數組元素排序:帶有數字的字符串自然數組元素排序:帶有數字的字符串本文深入研究了對包含在a 中組合字符串和數字的元素的陣列進行排序的任務自然順序,排序過程中應考慮字串內的數字序列。 The問題["IL0 Foo", "PI0 Bar", "IL10...
    程式設計 發佈於2024-12-23
  • 無論 Adob​​e Acrobat 安裝如何,如何在瀏覽器中強制下載 PDF?
    無論 Adob​​e Acrobat 安裝如何,如何在瀏覽器中強制下載 PDF?
    PDF 鏈接下載自訂在網頁上提供PDF 連結以供下載時,您可能會遇到行為因具體情況而異的問題是否安裝了AdAdobe Acrobat。要確保檔案始終在下載提示中打開,請按照以下HTML 5 解決方案操作:<a href="./directory/yourfile.pdf" ...
    程式設計 發佈於2024-12-23
  • MVC 架構中的模型層該如何建構?
    MVC 架構中的模型層該如何建構?
    在MVC中模型該如何建構? 在MVC中,模型代表應用程式的業務邏輯和資料。它封裝了特定領域的邏輯和規則,使應用程式能夠在不依賴 UI 或控制器的情況下執行任務並做出決策。 模型的概念:模型不是類別或物件。它是由三個主要元素組成的層:域物件:表示業務實體並包含特定於問題域的邏輯。 資料映射器:處理資料...
    程式設計 發佈於2024-12-23
  • 為什麼我的 React 應用程式在存取子網域 API 時出現 CORS 錯誤:\「無法從主網域存取子網域:否\'Access-Control-Allow-Origin\'\」?
    為什麼我的 React 應用程式在存取子網域 API 時出現 CORS 錯誤:\「無法從主網域存取子網域:否\'Access-Control-Allow-Origin\'\」?
    了解CORS 錯誤:「無法從主域存取子網域:無「Access-Control-Allow-Origin」」跨來源資源共享(CORS)是一種允許不同域相互互動的機制。當 API 伺服器在子網域上執行且 React 應用程式在主網域上執行時,可能會出現 CORS 錯誤,例如「無法從主網域存取子網域:No...
    程式設計 發佈於2024-12-23
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-12-23
  • 如何在 Python 中有效率地取得使用者輸入的整數列表?
    如何在 Python 中有效率地取得使用者輸入的整數列表?
    取得使用者輸入的數字清單:Pythonic 解決方案嘗試使用輸入從使用者擷取數位清單時() 或raw_input() ,由於Python 傾向於將輸入解釋為字串,您可能會遇到意外結果。為了避免此問題並取得整數列表,請採用更 Pythonic 的方法,使用列表理解和輸入拆分。 a = [int(x) ...
    程式設計 發佈於2024-12-23
  • Launch4j 是 JEXECreator 產生 Java .exe 檔案的可靠替代方案嗎?
    Launch4j 是 JEXECreator 產生 Java .exe 檔案的可靠替代方案嗎?
    Java 可執行檔創建:探索JEXECreator 的替代方案為了尋求JEXECreator 的更可靠、更經濟的替代方案,本問題探討了為Java 程式生成Windows .exe 檔案的選項。先前使用 JEXECreator 的嘗試遇到了與相容性和試用版中是否存在導航畫面相關的挑戰。 替代解決方案:...
    程式設計 發佈於2024-12-23
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-12-23
  • 儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    儘管程式碼有效,為什麼 POST 請求無法擷取 PHP 中的輸入?
    解決PHP 中的POST 請求故障在提供的程式碼片段:action=''而非:action="<?php echo $_SERVER['PHP_SELF'];?>";?>"檢查$_POST陣列:表單提交後使用 var_dump 檢查 $_POST 陣列的內容...
    程式設計 發佈於2024-12-23

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3