我有一系列未签名的字符在c我试图在10号基础上打印,我被卡住了.我认为这将在代码中得到更好的解释,因此,给出:
unsigned char n[3];
char[0] = 1;
char[1] = 2;
char[2] = 3;
Run Code Online (Sandbox Code Playgroud)
我想打印197121.
这对于小型256基数阵列来说是微不足道的.一个可以简单地1*256 ^ 0 + 2*256 ^ 1 + 3*256 ^ 2.
但是,如果我的数组大100字节,那么这很快就会成为一个问题.C中没有100字节大的整数类型,这就是我将数字存储在unsigned char数组中的原因.
我怎么能在10号基地有效地打印出这个数字呢?
我有点迷茫.
我知道如何将二进制转换为十进制.我知道至少2种方法:桌子和电源;-)
我想将二进制转换为十进制并打印此十进制.而且,我对这个"十进制"不感兴趣; 我想要打印它.
但是,正如我上面所写,我只知道将二进制转换为十进制的两种方法,并且它们都需要添加.所以,我在二进制中计算1或0的某个值,并将其添加到记忆值.这是一个很薄的地方.我有一个非常大的数字(1和64个零).转换时我需要在某些"变量"中放置一些中间结果.在C中,我有一个`int'类型,它只有4个字节,不超过10 ^ 11.
因此,在从二进制转换为十进制时,我没有足够的内存来存储中间结果.正如我上面所写,我对这个小数点不感兴趣,我只想打印结果.但是,我没有看到任何其他方法来解决它;-(是否有任何解决方案从二进制"只打印"?
或者,也许,我应该使用类似BCD(二进制编码的十进制)的东西进行中间表示?我真的不想用这个,因为它不是那么跨平台(英特尔的处理器有内置功能,但对于其他我需要编写自己的实现).
我很高兴听到你的想法.谢谢你的耐心等待.
语言:C