gpt4 book ai didi

arrays - float 到字符数组

转载 作者:行者123 更新时间:2023-12-05 02:35:25 26 4
gpt4 key购买 nike

作为一个55岁的编程新手,float有一点我是看不懂的。

假设我有一个像这样的 float

float my_fl = 1.00f

当我想将这个值存储在一个字符数组中时,我可以简单地使用 memcpy

char  bytes[4];

memcpy(bytes, &my_fl, sizeof(float));

for (size_t i = 0; i < sizeof(float); ++i)
printf("Byte %zu is 0x%02x.\n", i, bytes[i]);

我想将这个数组打印到控制台,但我看到了不同的值而不是 0x3f800000

你能帮我看看我错在哪里吗?

最佳答案

运行这段代码会得到以下输出:

Byte 0 is 0x00.
Byte 1 is 0x00.
Byte 2 is 0xffffff80.
Byte 3 is 0x3f.

因为您正在使用 char 来存储字节,并且在您的系统上(实际上是大多数情况下)对 char 进行了签名。然后当 char 被传递给 printf 时,char 类型的值被提升为输入 int

在包含表示形式 0x80 的字节 2 的情况下,作为带符号的 char 的这种表示形式具有值 -128。当提升为 int 时,您的值仍然是 -128,但它的表示形式是 0xffffff80,这是用 %x 打印的。

如果把bytes的类型改成unsigned char,不管表示形式如何,数组中的值都是正数,所以当值(value)观得到提升。

关于arrays - float 到字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70569934/

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