我通过串行端口接收以下数据:<0x1b><0x2e><0x15>...
'<>'
中包含的每个值是一个字节。
我需要数据中的第三个字节,所以我这样做:
int Length;
char Data[..];
Length = Data[2];
但是 Length 的值为 21 而不是 15,因为写入内存的值是十六进制。 如何将 15 的十进制表示形式转换为十进制 15?
我尝试过将其转换为各种类型等等.. 但这些对我来说都不起作用,因为我正在编写驱动程序,性能非常重要。 我查看了 stackoverflow 和其他网站,但所有给定的示例都是字符串,没有一个是普通整数。
当我将其发送给算法的其余部分时,我遇到了问题,因为算法期望 15。
最佳答案
给定 int x
,其中包含使用 natural packed binary-coded decimal 表示数字的 8 位,它们可以转换为数字:
int y = x/16*10 + x%16;
x/16
产生高四位,然后乘以十将它们缩放到十位。 x%16
产生低四位。它们保留在个位并添加到十位。
关于c - 如何仅使用 C 中的整数将十六进制转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57524824/