【问题标题】:Convert from int to binary or hex in mikroc在 mikroc 中从 int 转换为二进制或十六进制
【发布时间】:2017-03-07 12:48:05
【问题描述】:

我得到一个从 0 到 255 的 int 值,我想将该值转换为十六进制或二进制,以便我可以将它用于 8 位寄存器 (PIC18F uC)。 我该如何进行这种转换? 我尝试使用转换库中的 IntToHex 函数,但该函数的输出是一个 char 值,从这里我被卡住了。 我正在使用 mikroc 图片。 我应该从哪里开始? 谢谢!

【问题讨论】:

  • 不清楚你在问什么,比特就是比特。向我们展示您希望以编程方式执行的具体示例。我在这个基础中有这个值,我以这种方式获得,并希望它以这种形式转换为这个基础中的这个值,所以我可以在这里使用它......
  • 一个 0 到 255 的数字可以放入一个 8 位寄存器,这是您唯一需要担心的事情。了解 8 位或 16 位有符号/无符号整数的数值限制。十六进制、八进制、十进制或二进制 - 这些只是同一整数的表示。您拥有的值(通常)在微控制器中编码为 binary 数字,并且仅当您想要进行按位操作(提取、屏蔽或移动单个位)时才应该关心您。您想要将 representation 更改为 hex/oct/dec 的唯一地方是向用户显示值时。
  • 换句话说,IntToHex 可能返回一个char 指针,即一串字符,因为它正在将整数转换为文本表示以进行显示。例如,如果您的值为255,则IntToHex 可能会返回一个以null 结尾的字符串"FF"。但是要将值分配给寄存器,只需分配实际值,而不是字符数组。

标签: type-conversion microcontroller pic mikroc


【解决方案1】:

这是一个常见问题。许多人不明白,十进制 15 与十六进制 F 相同,八进制 17 与二进制 1111 相同。

不同的数字系统是用于人类的,对于 CPU,它都是二进制的!

当 OP 说,

我得到一个从 0 到 255 的 int 值,我想将该值转换为 十六进制或二进制,因此我可以将其用于 8 位寄存器(PIC18F uC)。

它反映了这种误解。可能是因为调试器配置为显示“十进制”值,而示例代码/数据表显示寄存器操作的十六进制值。

因此,当您获得从 0 到 255 的“int”值时,您可以直接将该数字写入 8 位寄存器。您不必将其转换为十六进制。 Hex只是让人类生活变得轻松的表示。

你能做的是——这是个好习惯——

REG_VALUE = (unsigned char) int_value;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 2018-11-24
    • 2012-06-26
    • 2019-06-10
    • 1970-01-01
    • 2015-09-17
    相关资源
    最近更新 更多