c - 在 C 中将 uint_8* 转换为任何类型,比如“double”或结构?
问题描述
在 C 语言中,我有一个程序,比如
void foo(A a);
在这里,类型 A 是已知的。它可以是任何类型、int、指针或结构,或任何用户编写的类型。
现在我有一个指针指向的数据,比如uint8_t* data
大小n
我如何转换data
为a
A 类型?
我正在使用模糊后端从 typeuint8_t*
和 size的随机数据中测试 foo 。n
解决方案
假设您从流中读取字节(uint8_t)并希望将数据传递给您的函数foo。
要遵循的步骤:
- 您确定您阅读了数据类型 A 的序列化信息吗?
- 您确定至少已读取 sizeof(A) 个字节吗?
- 你确定你的类型 A 是(平凡的)可序列化的吗?(例如,如果 A 包含指向另一个对象的指针怎么办)
然后
foo((A) data); // <- remember: A is just a placeholder, but data is a pointer to uint8_t
推荐阅读
- powershell - Powershell 4 中的递归深度
- python - 使用 Pysolr 在新节点上添加副本或移动副本
- python - 为什么我的 Keras 模型只训练 1407 个训练实例而不是 45k?
- python - python,通过基于 Web 的应用程序在浏览器中运行具有多个踏板的 selenium
- elasticsearch - 如何索引复杂的逻辑表达式?
- react-native - 如何自动打开表情符号键盘?[反应原生]
- amazon-web-services - 使用 @SqsListener 时 Spring Boot 应用程序启动失败
- bash - 列出远程服务器上的文件并检索自 10 分钟以来未修改的文件
- c++ - boost::asio::write 上的互斥锁不起作用
- ruby-on-rails - 使用 SmarterCSV 时有没有办法忽略带有空标题的列?