【问题标题】:It is possible to represent a 64-bit number as string when hardware doesn't support 64-bit number?当硬件不支持 64 位数字时,是否可以将 64 位数字表示为字符串?
【发布时间】:2018-12-11 10:48:52
【问题描述】:

我想将 64 位数字显示为字符串。问题是我的硬件不支持 64 位数字,只支持 32 位。

所以,我将 64 位数字拆分为两个 32 位数字(高位和低位)。

Example: 64-bit number  :  12345678987654321 (002B DC54 6291 F4B1h)
         32-bit low part:  1653732529                  (6291 F4B1h)
         32-bit high part: 2874452                     (002B DC54h)

我认为我的问题的解决方案是将这个数字显示为字符串。 有可能吗?

谢谢。

【问题讨论】:

  • python c?你是哪种语言?你的问题与microcontroller 有什么关系?有很多 mc - 哪一个?请阅读标签描述并删除不适当的 - 谢谢
  • 语言对我来说并不重要,我将两者都用作参考。我正在使用嵌入式系统。这就是我提出“微控制器”的原因。我认为如果我的问题有解决方案,语言或系统都无关紧要。谢谢。
  • 是的,你可以。如果您只想存储一个数字并显示它,您可以将该数字直接存储为字符串而不是两个 32 位数字。类似string my_number = "123456789123456789"; cout << my_number;
  • 你试过做64位除法吗?一些 C 编译器可以在软件中模拟 64 位除法。
  • OP 只讨论存储和显示数字,而不是对它们进行任何数学运算。

标签: string math language-agnostic microcontroller


【解决方案1】:

是的,您可以使用 32 位 uints 甚至更低位宽的数组 ...

你可以用这个来打印:

所以首先打印一个在任何位宽上都很容易的十六进制字符串(因为您只需将较低位宽的打印件从 MSW 到 LSW 堆叠在一起),然后将十六进制文本转换为十进制文本...

使用这个单元的链式数组,您可以进行如下数学运算:

uints 数组进行操作比对字符串快得多...

但如果你坚持是,你也可以使用字符串表示...

还有像 BCD 这样的混合表示也适合这种情况,但您的 MCU 需要支持它...

【讨论】:

  • 感谢您回答@Spektre。所以,基本上我应该取两个 32 位数字,将其转换为十六进制,然后转换为字符串。将这两个字符串连接起来转换成十进制?
  • @KelvinCésardeAndrade 是的,只有你可以直接从两个 uint 转换十六进制字符串 ...
【解决方案2】:

根据您选择的语言,该语言可能允许您使用大于 32 位的整数,即使在 32 位架构(如 python)上也是如此。 如果是这种情况,问题就变得微不足道了:计算值,然后计算相应的十六进制字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2021-10-15
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    相关资源
    最近更新 更多