2015-09-30 47 views
-1

我有一个由元素组成的char数组3 3.该数组用于表示数字53.应该如何将这三个字符数转换为其二进制等效值?我在C中实现它,稍后它将需要在汇编中重写。我寻求的解决方案应该是纯粹的低工作,没有任何辅助库。将char整数表示转换为二进制

我基本上坚持一个想法分别转换5和4(通过映射5和4到他们的ascii等价物)。然而,这个想法不能肯定。我有另一个想法,通过将字节右移4,将char'5'转换为int 5.然后与4相同。然后乘以5乘以10并加上4,然后用两个算法除法找出余数并组成二进制数。

+3

你自己做了什么? SO不是“做我的作业”网站。 – Olaf

+0

抱歉没有提供任何信息。我基本上坚持一个想法分别转换5和4(通过映射5和4到他们的ASCII等值)。然而,这个想法不能肯定。 我有一个想法,通过将字节右移4,将char'5'转换为int 5.然后与4相同,然后乘以5并乘以4,然后使用除以两个算法找到余数并组成二进制号码 –

+2

如果你不确定你的想法是否可行,为什么不尝试? – awksp

回答

1

在C:

int asciToInteger(char *c) 
{ 
    int result = 0; 
    while (*c) 
    { 
     result *= 10; 
     result += (*c - '0'); 
     c++; 
    } 
    return result; 
} 

假定输入是有效的。

您可以通过编译某些开关来获得汇编语言版本的先机,这些开关将以汇编语言形式输出!例如在GNU C:gcc -S -c ascii2int.c

+0

谢谢,先生!这是一个整洁的算法!纠正我的错误,但ascii数字只有前四位不同? 我肯定会使用gcc选项将代码转换为汇编指令,因为主项目必须是汇编程序。我只是想在C中实现逻辑,所以完成程序会更容易:)! –

+2

@Lukas Valatka关于这个答案没有什么ASCII'。它独立于'char'编码。 – chux

+2

是的,在ASCII,UTF,EBCDIC和其他编码系统中,数字是连续的,并且与最低的nybble不同。 –