我正在尝试读取PNG文件的内容。
正如您所知,png文件中所有数据都是以4字节的方式编写的,包括文本和数字。因此,如果我们有数字35234,它保存在这样的方式: [1000][1001][1010][0010]。
但有时数字会更短,所以前面的字节为零,当我从char *转换为integer并读取数组时,我得到了错误的数字。例如 [0000] [0000] [0001] [1011] 有时数字被解释为负数,有时为零!
让我给你一个直观的例子:
我希望我能清晰地解释我的问题!
如何将这样的数组转换为一个整数值?
好的,让我修改一下我的代码来更好地解释它:
正如您所知,png文件中所有数据都是以4字节的方式编写的,包括文本和数字。因此,如果我们有数字35234,它保存在这样的方式: [1000][1001][1010][0010]。
但有时数字会更短,所以前面的字节为零,当我从char *转换为integer并读取数组时,我得到了错误的数字。例如 [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*
?或者是什么意思? - Nawaz