gpt4 book ai didi

c++ - 如何将 char 数组转换为单个整数?

转载 作者:可可西里 更新时间:2023-11-01 17:08:29 27 4
gpt4 key购买 nike

我正在尝试读取 PNG 文件的内容。

您可能知道,所有数据都以 4 字节的方式写入 png 文件中,包括文本和数字。因此,如果我们有编号 35234,则以这种方式保存:[1000][1001][1010][0010].

但有时数字更短,所以第一个字节为零,当我读取数组并将其从 char* 转换为整数时,我得到了错误的数字。例如 [0000] [0000] [0001] [1011]有时数字被误解为负数,有时被误解为零!

让我给你一个直观的例子:

char s_num[4] = {120, 80, 40, 1};

int t_num = 0;

t_num = int(s_num);

我希望我能很好地解释我的问题!

如何将此类数组转换为单个整数值?

好的好的好的,让我更改我的代码以更好地解释它:

char s_num[4] = {0, 0, 0, 13};
int t_num;


t_num = *((int*) s_num);
cout << "t_num: " << t_num << endl;

这里我们必须得到 13 作为结果,好吗?但是这个新解决方案的答案是错误的,你可以在你的电脑上测试!我得到这个号码:218103808 这绝对是错误的!

最佳答案

您将 (char*) 转换为 (int)。你应该做的是转换为指向整数的指针,即

t_num = *((int*) s_num));

但实际上您应该将代码提取到它自己的函数中并确保:

  1. 字节顺序正确
  2. sizeof(int) == 4
  3. 使用 C++ 转换(即 static、dynamic、const、reinterpret)

关于c++ - 如何将 char 数组转换为单个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4633252/

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