2011-08-08 34 views

回答

1

这是因为缓冲器可以被直接铸造为整数值。

int original = 0xBADF00D; 
void *buffer = &original; 

//Cast the void* as an int* and then dereference the value 
int intFromBuffer = *(int*)buffer; 

NSLog(@"0x%X 0x%X", original, intFromBuffer); 

输出:

0xBADF00D 0xBADF00D

+0

乔您好,感谢的!我认为这将适用于非常大的数字? – user867358

+0

保证 - 只是谷歌转换为十亿十六进制,看着intFromBuffer,它的工作! – user867358

+0

是的,它可以处理非常大的数字,但要确保您正在使用缓冲区内部的正确整数大小。如果缓冲区指向一个32位无符号整数,那么使用一个32位无符号整数,对于64位数也是一样。这非常重要,这样您就不会因为无法访问的垃圾数量或更糟糕的读取内存而导致数据丢失。 – Joe

相关问题