C 如何存储可以初始化为整数或浮点的通用四字节
我正在尝试写一个设置列表,让memcpy'ed到位。这将是一个非常大的列表(100多个项目),开发人员将花时间进行调整。我希望能够将其中任何一个初始化为4字节浮点或4字节整数 我想要的是:C 如何存储可以初始化为整数或浮点的通用四字节,c,byte,C,Byte,我正在尝试写一个设置列表,让memcpy'ed到位。这将是一个非常大的列表(100多个项目),开发人员将花时间进行调整。我希望能够将其中任何一个初始化为4字节浮点或4字节整数 我想要的是: {.settingName="setting 1", .value=0.5f}, {.settingName="setting 2", .value=0.5f}, {.settingName="setting 3", .value=300}, 因为开发人员要花时间调整这些值,所以我不能只初始化0x3f000
{.settingName="setting 1", .value=0.5f},
{.settingName="setting 2", .value=0.5f},
{.settingName="setting 3", .value=300},
因为开发人员要花时间调整这些值,所以我不能只初始化0x3f000000而不是0.5f
我也无法将其存储为浮动:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
uint8_t data[sizeof(float)];
int main(){
float f = 0xFFFFFFFF;
memcpy(data, &f, sizeof(f));
for(int i=0; i<sizeof(data); i++){
printf("%x ", data[sizeof(data)-1-i]);
}
uint32_t integer = (uint32_t) f;
printf("\n%x ", integer);
}
#包括
#包括
#包括
uint8_t数据[sizeof(浮动)];
int main(){
浮动f=0xFFFFFF;
memcpy(数据和f、尺寸(f));
对于(int i=0;i使用一个并集
,但是您需要一个方法来判断该值是整数还是浮点
union number {
int i;
float f;
};
使用一个联合
,然后需要一个方法来判断该值是整数还是浮点
union number {
int i;
float f;
};
使用包含联合和标志的结构,该标志指示联合的哪个成员处于活动状态
typedef struct {
typedef union {
int ival;
float fval;
} data;
enum {
INT,
FLOAT;
} which;
} dataContainer;
使用包含联合和标志的结构,该标志指示联合的哪个成员处于活动状态
typedef struct {
typedef union {
int ival;
float fval;
} data;
enum {
INT,
FLOAT;
} which;
} dataContainer;
重要的问题是你为什么要这样做?这个问题的答案通常表明你在解决根本问题时采取了错误的方法。为什么不使用联合,然后只做{.settingName=“setting 1”,.value_f=0.5f},{.settingName=“setting 3”,.value_i=300}
?重要的问题是你为什么要这样做?这个问题的答案通常表明你在解决根本问题时采取了错误的方法。为什么不使用联合,然后只做{.settingName=“setting 1”,.value\u f=0.5f},{.settingName=“setting 3”,.value\u i=300}
?有趣,您介意添加一个示例吗?(Main)有趣,您介意添加一个示例吗?(Main)