我正在尝试将读取的数字转换为无符号短
。
我的程序将特定数字保存在文件中。之后我尝试读取它并将其转换为另一种类型。实际上读取的值是正确的,但是当我转换它时,它是一个不同的值。
这是我读取文件的方式:
fseek(fp, 0, SEEK_END);
int length = ftell(fp);
fseek(fp, 0, SEEK_SET);
char* buffer = malloc(length);
if (buffer) {
fread(buffer, 1, length, fp);
}
fclose(fp);
假设该值为“1337”; 缓冲区将具有正确的值“1337”;
现在这是我尝试将值转换为无符号短
的方法:
unsigned short num = (unsigned short)buffer;
var num
现在不再是与 buffer
相同的值。
我做错了什么?
最佳答案
这与读取文件无关。您不能只是将字符串(实际上是指向 char
的指针)转换为数字并期望它执行任何明智的操作。
您应该做的是使用转换函数,例如 strtoul
(在 <stdlib.h>
中声明)或 sscanf
(在 <stdio.h>
中声明)。但请确保给它一个字符串,即确保 buffer
以 null 结尾。
关于在C中将读取的数字转换为无符号短整型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51087319/