提问人:kelvinandrade 提问时间:12/11/2018 最后编辑:kelvinandrade 更新时间:12/12/2018 访问量:333
当硬件不支持 64 位数字时,是否可以将 64 位数字表示为字符串?
It is possible to represent a 64-bit number as string when hardware doesn't support 64-bit number?
问:
我想将一个 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)
我认为解决我问题的方法是将这个数字显示为字符串。 有可能吗?
谢谢。
答:
1赞
Spektre
12/11/2018
#1
是的,您可以使用 32 位甚至更低位宽的数组......uint
对于打印,您可以使用以下命令:
因此,首先打印一个在任何位宽上都很容易的十六进制字符串(因为您只需将较低的位宽从 MSW 打印到 LSW 堆叠在一起),然后将十六进制文本转换为 dec 文本......
使用这个链式单位数组,您可以执行如下数学运算:
对 s 数组进行运算比对字符串进行运算要快得多......uint
但是,如果您坚持“是”,您也可以使用字符串表示形式......
也有像 BCD 这样的混合表示适合这种情况,但您的 MCU 需要支持它......
评论
0赞
kelvinandrade
12/11/2018
感谢您@Spektre回答。所以,基本上我应该把我的两个 32 位数字,转换为十六进制,然后转换为字符串。将这两个字符串连接起来并转换为十进制?
0赞
Spektre
12/12/2018
@KelvinCésardeAndrade是的,只有这样,你可以直接从两个 uints 中投射十六进制字符串......
1赞
David Raluy
12/11/2018
#2
根据您选择的语言,该语言可能允许您使用大于 32 位的整数,即使在 32 位架构(如 python)上也是如此。 如果是这样的话,问题就变得微不足道了:计算值,然后计算相应的十六进制字符串。
评论
string my_number = "123456789123456789"; cout << my_number;