c - 如何将包含 8 个字节(表示 64 位 int)的(char)数组转换为字符串

标签 c type-conversion microcontroller iar

正如标题所写,我需要将一个包含 8 个字节(代表 64 位 int)的 (char) 数组转换为字符串。我在 NEC78K0R(16 位单片机)上使用 C 代码。我正在使用 IAR 嵌入式工作台 IDE。

我的想法是将它们以 64 位 int 类型(如 f.x long long 或 int64_t(来自 stdint.h))进行 OR 运算,然后使用类似 sprintf 的方法将其转换为字符串。

然而,每当我使用任何标准的 64 位整数类型时,编译器将开始吐出诸如“'long long' 类型不存在'”之类的错误。

任何帮助将不胜感激。

最佳答案

如果 char 数组引用了一个 8 字节的内存块,它实际上是一个真正的 64 位整数,并且您的编译器支持 int64_t,您可以只转换和取消引用.

int64_t convert(const char* input)
{
    return *((int64_t*)input);
}

如果平台支持 64 位数据类型,sprintf 也将通过 %L 格式说明符支持它。

如果您的编译不支持任何 64 位数据类型,您将需要使用特定的库来为您处理它们,例如BigInt。或 GMPlib .

关于c - 如何将包含 8 个字节(表示 64 位 int)的(char)数组转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671900/

相关文章:

c - Cortex-M7 的 DS-5 配置

time_t 的 C 字符串表示

microcontroller - 在微 Controller 中将数据从内存移至内存

c - 如何将数据插入到 MCU 编译的二进制文件中

arm - 如何修复 STM32CubeProgrammer 未找到 STM32 目标

c - 有可能因为一种方法而避免包含整个标准头文件吗?

c - 如何从开源包中检索一般信息,关注 poker-eval 库

mysql - 搜索非常大的彩虹表文件

将 unsigned char * 转换为 char * string C

c++ - OpenCV:我是否正确声明了矩阵?