C++ 如何在c+中将160位长的位集转换为以10为基数的整数+;?

C++ 如何在c+中将160位长的位集转换为以10为基数的整数+;?,c++,C++,我有一个160位长的位集,我想把它转换成一个以10为基数的数字,并在算术运算中使用它。我可以用什么类型来存储那个东西?我如何将位集转换成以10为基数的数字来存储它 提前感谢将其存储为160位整数(有相当多的任意精度整数包可帮助实现这一点) 然后执行以下操作: 从除以10的余数中得到最低有效的十进制数字 将数字除以10(使用整数除法)以删除该最低有效位 重复此操作,直到除法后的结果为0。您现在有了数字的小数位数。您能再解释一下您想做什么吗?您正在处理160位数字吗?如果不是,你能解释一下你希望从你

我有一个160位长的位集,我想把它转换成一个以10为基数的数字,并在算术运算中使用它。我可以用什么类型来存储那个东西?我如何将位集转换成以10为基数的数字来存储它


提前感谢

将其存储为160位整数(有相当多的任意精度整数包可帮助实现这一点)

然后执行以下操作:

  • 从除以10的余数中得到最低有效的十进制数字
  • 将数字除以10(使用整数除法)以删除该最低有效位

  • 重复此操作,直到除法后的结果为0。您现在有了数字的小数位数。

    您能再解释一下您想做什么吗?您正在处理160位数字吗?如果不是,你能解释一下你希望从你的位集中得到什么数字吗?从二进制到十进制的转换绝非易事。本质上,您必须实现除法。@Range:为什么您必须将其转换为十进制才能在算术运算中使用它?您将它传递到什么中,它将采用十进制字符串,而不是二进制?@Range:是的,160位将适合三个
    无符号long
    值。因此,将64位放入其中(好吧,您只需要在最后一位放入32位),并将最终哈希值建立在这些位的基础上。事实上,如果您只需要双哈希,那么您可以合理地使用SHA-1哈希的顶部64位作为第一位,底部64位作为第二位,这样就完成了。基本上,SHA-1对于一个哈希表来说已经是巨大的杀伤力了,所以你们不需要做更多的工作。感谢你们所有的人!我决定使用这个家伙发布的代码()以二进制格式执行算术运算。尽管我愿意猜测,无论您使用什么整数包来存储它,它也会为您转换为基数10。我有一种感觉,如果OP开始使用bignum库,那么就没有理由一开始就使用位集。我使用外部库没有问题,只要我能将它们导入ns-3离散网络模拟器,这有时会很痛苦。你的处理器不会一次在寄存器中存储160位,因此,您的所有操作都需要分解为更小的块。外部库的目的是为您这样做,因为为您自己这样做不会有乐趣。从二进制到十进制的转换对我来说似乎有点奇怪,因为你们不能在数字计算机中存储十进制。您可以将十进制数字存储为字符串或BCD格式,但这两种格式都不能使对数字的操作变得更简单。感谢大家!我决定使用这个家伙发布的代码(alikhuram.wordpress.com/2013/05/15/…)以二进制格式进行算术运算。