基数转换和数字访问

Number Base conversion and digits access?

本文关键字:数字 访问 转换      更新时间:2023-10-16

语言是c++

我必须从0 - n中读取一些数据,理论上n可以是无穷大。根据n的值,我必须把数字从十进制改为十进制,即使它的基数是10000。如果我读入5个数字,n=5,我必须把它们转换成base5

也就是说,我不确定如何进行转换,但我确信我可以通过阅读一些文章来获得它。但我真正关心的是当我转换成n为底时我的结果会是什么类型来存储在数组中?很长时间吗?

一旦我在某个数组中获得了转换后的数字,我如何访问每个数字中的每个单独的数字以便稍后进行操作?

谢谢。

基本上,您将对数字执行的大多数操作都是基数不变的。这意味着你可以在不知道基数的情况下对两个数进行加/减/多/分(甚至可以进行幂/根/对数运算)。
这样想,当计算机将两个无符号整数相加时,它并没有做什么特别的事情,即使它实际上处理的是一个32位的以2为基数的数。

你可以使用int(或任何你需要的数据类型),并在显示时转换基。

从十进制到进制的转换是通过除法/模数完成的。X为十进制数,b为目标进制。

  1. r = x % b
  2. y = (x-r): b
  3. 将x替换为y,从1开始重复,直到y变为0
  4. 结果为r,自下而上

在它的下面,你必须创建一个std::map,为r中的数字替换模式,即对于16进制的一些条目将是10 -> A, 11 -> B。这意味着,你必须考虑一个非常大的n的表示形式。

BTW:考虑一本关于编程101的书,十进制到bin/oct/十六进制的转换总是解释,并且很容易适应其他基数