在C中将读取的数字转换为无符号短整型

标签 c file casting

我正在尝试将读取的数字转换为无符号短

我的程序将特定数字保存在文件中。之后我尝试读取它并将其转换为另一种类型。实际上读取的值是正确的,但是当我转换它时,它是一个不同的值。

这是我读取文件的方式:

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/

相关文章:

无法将参数从 C 传递到汇编代码

java - getClass().getResourceAsStream ("/folder") 返回 null

objective-c - 在 cocoa 中进行类型转换以修复警告

c# - T 的通用存储库过滤器数据

c - 如何防止使用 arm-none-eabi-gcc 编译器对该函数进行 vector 运算优化?

objective-c - 如何在 Objective-C 中创建数字数组?

javascript - 使用 JavaScript 从文件名列表更改 HTML 文档的背景图像

Javascript filereader onload(从服务器获取文件)

java 为什么在方法返回类型中可以使用 char to short

c - 我收到 : Socket operation on non-socket 的原因是什么