gpt4 book ai didi

在C中将char数组转换为int

转载 作者:行者123 更新时间:2023-12-02 08:38:09 25 4
gpt4 key购买 nike

这是将数组转换为数字的安全方法吗?

// 23 FD 15 94 -> 603788692
char number[4] = {0x94, 0x15, 0xFD, 0x23};
uint32_t* n = (uint32_t*)number;
printf("number is %lu", *n);

更多信息

我在具有 LSB 架构的嵌入式设备中使用它,不需要便携。我目前正在使用移位,但如果这段代码是安全的,我更喜欢它。

最佳答案

没有。只有当整数时,您才可以访问整数。

但这里是您可以通过简单地转换逻辑来操纵对象的二进制表示的方法:

uint32_t n;

unsigned char * p = (unsigned char *)&n;

assert(sizeof n == 4); // assumes CHAR_BIT == 8

p[0] = 0x94; p[1] = 0x15; p[2] = 0xFD; p[3] = 0x23;

寓意:您可以将每个对象视为一个字节序列,但不能将任意字节序列视为任何特定对象。

此外,类型的二进制表示在很大程度上平台相关,因此无法确定您从中得到的实际整数值。如果您只想从其 base-256 数字合成一个整数值,请使用普通数学:

uint32_t n = 0x94 + (0x15 * 0x100) + (0xFD * 0x10000) + (0x23 * 0x1000000);

这是完全独立于平台的,并且纯粹根据而不是表示来表达您想要的。将其留给您的编译器来生成代码的机器表示。

关于在C中将char数组转换为int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19197251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com