我有一個unsigned int,我現在用的每一個32位的存儲特定的資料片..正整數爲void *,然後返回
function(void * a);
unsigned int val = 0xFFFFFFFF;
function((void *) (long) val);
內的功能,我想修改unsigned int ..我無法弄清楚如何在不丟失精度或任何位的情況下對其進行解碼。是tjere這樣做正確的方式..似乎無法弄清楚..
我有一個unsigned int,我現在用的每一個32位的存儲特定的資料片..正整數爲void *,然後返回
function(void * a);
unsigned int val = 0xFFFFFFFF;
function((void *) (long) val);
內的功能,我想修改unsigned int ..我無法弄清楚如何在不丟失精度或任何位的情況下對其進行解碼。是tjere這樣做正確的方式..似乎無法弄清楚..
你應該在澆注到一個void *這樣val的地址傳遞給函數:
function((void*)&val);
並設計你的功能,如:
void function(void* ptr) {
unsigned int *p = (unsigned int*)ptr;
(*p)++; //example of a change
}
'int'不保證有32位。如果您需要固定寬度類型,請使用'stdint.h'中的一個。 – Olaf
你的問題是什麼?爲什麼所有的鑄造?爲什麼使用'void *'?如果不是絕對必要的,千萬不要使用'void *'。 – Olaf
什麼似乎是問題?你在做什麼,出了什麼問題?爲什麼'(長)'演員在那裏? –