我有一个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
什么似乎是问题?你在做什么,出了什么问题?为什么'(长)'演员在那里? –