c - 在没有联合的情况下解决从整数到较小指针的转换警告
问题描述
当我做这个任务时:
const uint8_t *p = (uint8_t *)(uint64_t address);
我明白了
conversion from integer to smaller pointer warning
所以我想从一个 uint64_t 整数中保存一个 uint8_t 指针。我不能修改这两种类型。
LE:所以整个代码看起来像这样
typedef token{
const uint8_t *pTr;
}token;
typedef key{
uint64_t srcAddress;
}key;
在一个将两个结构的指针作为输入的函数中,我想做:
token->pTr = key->srcAddress
解决方案
如果你的程序中有一个 uint64_t 变量,那么正确的做法是:
uint64_t address = ...;
const uint8_t *p = (uint8_t *)(&address);
记住 cpu 的字节序也是一个好主意。
推荐阅读
- pandas - 为什么从 csv 加载数据框将所有 ndarray 转换为字符串?
- python - Pandas 相当于 numpy.array2string
- java - Amazon Corretto 11 随 Corretto 15 的安装一起卸载
- android - 再次观察到片段中的 LiveData 后,分页 3 返回最后一个值
- ssis - 由任务计划程序运行时的 SSIS 工作流问题
- postgresql - PostgreSQL 在直接运行查询与通过 Java 应用程序运行查询时给出不同的计划/索引结果
- reactjs - 我可以将 redux 仅用于事件驱动的业务逻辑吗?
- node.js - 单机部署两个fabric网络|| Hyperledger fabric2.0 Blockchain with convector cli
- css - 按钮在 Safari iOS 上没有背景
- string - 如何将字符串转换为符文?