如何获取float地址以与memcpy一起使用
How to get float address for use with memcpy?
我试图用float变量的内存地址填充字节/char数组(数组长度为4个字节=指针),但是无论我做什么,它都会不断获得float值,而不是地址:
float f = 20.0f;
memcpy(data, &f, sizeof(data));
与:
调试printf("Array: %#X, %#X, %#X, %#X", data[0], data[1], data[2], data[3]);
...以十六进制格式给出浮点值(20.0):
Array: 0, 0, 0XA0, 0X41
我需要的是浮点的内存地址。我尝试以某种不同的方式铸造/取消给它,但不能使它起作用...
这是 memcpy
的工作方式:需要一个指针到 data 它将复制。您的 Data 是指向浮动的指针,因此您需要将指针传递给指针到Float:
#include <cstring>
int main() {
float f = 20.0f;
float* pf = &f;
char data[sizeof(pf)];
memcpy(data, &pf, sizeof(data));
}
对于C解决方案,将十六进制数据保存到A 复合文字。
#include <stdio.h>
int main(void) {
char data[sizeof (float*)];
printf("%pn", (void*) data);
float f;
printf("%pn", (void*) &f);
memcpy(data, &(float *){&f}, sizeof (float*));
for (unsigned i = 0; i<sizeof data; i++) {
printf("%02hhX ", data[i]);
}
puts("");
}
输出
0xffffcba8
0xffffcba4
A4 CB FF FF 00 00 00 00
地址有效到块的末端。
根据需要调整endian/打印订单。
相关文章:
- 如何将enable-if与模板参数和参数包一起使用
- 如何将PERF_AMPLE_READ与mmap一起使用
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将C++中的库和头与MinGW一起使用
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 为什么我不能将 rand() 与数组的大小一起使用?
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 将fold表达式与std::一起用于两个元组
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 将 std::allocate_shared 与多态资源分配器一起使用
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 将 exprtk 与自定义类的对象一起使用
- 将 std::set 与基于键的比较器一起使用
- 将 C++ 类与 Rcpp 一起使用,从 C 或 R 修改它
- 如何将 Eigen::Ref 与 pybind11 一起使用?
- 如何获取float地址以与memcpy一起使用
- 将memcpy与Eigen类型的向量一起使用安全吗
- 如何访问 std::vector 的内部连续缓冲区,是否可以将其与 memcpy 等一起使用