c - 是否可以从预处理器转换为数组?
问题描述
我正在尝试将预处理器转换为数组,但我不确定是否有可能,
例如,我定义了:数字 0x44332211
下面的代码:
#include <stdio.h>
#include <stdint.h>
#define number 0x44332211
int main()
{
uint8_t array[4] = {(uint8_t)number, (uint8_t)number << 8,(uint8_t)(number <<16 ),(uint8_t)(number <<24)};
printf("array[%x] \n\r",array[0]); // 0x44
printf("array[%x] \n\r",array[1]); // 0x33
printf("array[%x] \n\r",array[2]); // 0x22
printf("array[%x] \n\r",array[3]); // 0x11
return 0;
}
我想将它转换为两个 uint8_t array[4] where array[0] = 0x44, array[1] = 0x33, array[2] = 0x22, array[3] = 0x11
可能吗?
my output:
array[11]
array[0]
array[0]
array[0]
解决方案
是的,您正在将 anint
转换为uint8_t
. 唯一的问题是,当您进行转换时,结果将不适合您要转换的类型,并且信息将丢失。
您的uint8_t
演员表只占用了最低有效字节。这就是为什么你在第一种情况下得到 11 而在其他情况下得到 0 ......因为你向左移动会在最右边的位置留下 0。
推荐阅读
- powershell - Invoke-Sqlcmd - 如何向包含冒号的 SQL 提供变量
- javascript - .html 仅返回内部内容
- javascript - 如何计算keyup的最终金额
- java - 访问rest资源时keycloak 403禁止错误,其中评估api显示允许
- laravel - Laravel Solarium 如何将 csv 文件添加到 Solr 核心?
- azure - 从 Xamarin.forms 将数据保存到 Azure 时如何解决超时异常
- xml - 微软构建。扩展标准 xsd 架构
- python - 如何在Python中根据条件删除列表元素
- elasticsearch - Elasticsearch curl从需要departmentCityId和destinationCountryId的查询中获取所有旅游ID
- python - 使用 python 和 csv 文件创建热图