简体   繁体   English

如何将64位void指针转换为32位void指针?

[英]How to convert 64bit void pointer into 32bit void pointer?

I have a buffer(contains audio data) which is void pointer. 我有一个缓冲区(包含音频数据),它是空指针。 In 32bit system, it's size is 4 byte and in 64 bit system, it's size is 8 byte. 在32位系统中,它的大小是4个字节,在64位系统中,它的大小是8个字节。 So how can i convert 64bit void pointer into 32bit void pointer without loosing any data ? 那么如何在不丢失任何数据的情况下将64位void指针转换为32位void指针呢?

As long as the value in your 64-bit pointer plus the size of your buffer is less than 2^32 you can just use the lower 32 bit of your pointer. 只要您的64位指针中的值加上缓冲区的大小小于2^32您就可以使用指针的低32位。 For example uint32_ptr ptr32 = static_cast<uint32_ptr>(ptr64) . 例如uint32_ptr ptr32 = static_cast<uint32_ptr>(ptr64) It is, however, not a best practice to mess with pointers like this. 但是,最好不要弄乱这样的指针。

In addition, I assume you'll be using these pointers in the same process on the same machine. 另外,我假设您将在同一台计算机上的同一进程中使用这些指针。 Any other application will fail! 其他任何应用程序都会失败!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM