gpt4 book ai didi

c - 寻找将十进制值转换为十六进制表示的宏

转载 作者:太空狗 更新时间:2023-10-29 15:00:38 29 4
gpt4 key购买 nike

在我的一个项目中,我将当前版本定义为十进制值,看起来像这样:

#define MINOR_VERSION 13

为了能够在要求时输出版本,我需要将十六进制表示形式转换为字符串。目前我正在使用 sprintf(),它基本上是这样的:

char buffer[3];
sprintf(buffer, "%2x", MINOR_VERSION);
// output buffer

这有几个缺点,其中之一是增加了代码大小,因为需要包含 sprintf()。此外,该值是在运行时计算的,无论如何都是浪费精力。这两个问题对我来说都很重要,因为我在这里使用微 Controller 。

也许我错过了非常明显的东西,但我无法想出一个漂亮干净的宏来为我进行转换。原则上,我需要一种方法在编译期间将 13 转换成它的十六进制表示形式(2 位数字,前面通常没有 0x)0d

你有什么建议?

最佳答案

翻转问题,将版本定义为十六进制。当您需要将其用作字符串时,请使用 here 中的答案将其转换为字符串。然后你可以这样做:

#include <stdio.h>

#define VERSION 0xd
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)

int main() {
printf("hello " TOSTRING(VERSION) "\n");
printf("%d\n", VERSION);
}

关于c - 寻找将十进制值转换为十六进制表示的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20831922/

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