2014-09-29 74 views
-1

我試圖將每個字母的ASCII值轉換爲二進制,但我不知道如何獲取小數值並將其轉換。下面是他們的ASCII值打印出一個字向右如何將這些ASCII值轉換爲二進制C

#include <stdio.h> 
#include <string.h> 


int main (void) { 

    char c[20]; 
    printf("Enter a word: "); 
    scanf("%s",&c); 

    int i; 
    char *str = c; 
    int length = strlen(str); 

    for (i = 0; i < length; i++) { 
     printf("%c = %d \n", str[i] , str[i]); 
    } 
    return 0; 
} 

輸出示例代碼:

Enter a word: Program 
P = 80 
r = 114 
o = 111 
g = 103 
r = 114 
a = 97 
m = 109 
+1

'scanf(「%s」,&c);'應該是'scanf(「%s」,c);' – 2014-09-29 04:24:40

+0

你應該知道它們已經是二進制的了,它們必須是因爲你的處理器只能處理二進制指令代碼和數據我猜你是你的是一個二進制文本表示,例如'10100110'? – 2014-09-29 04:24:46

+0

是的,我想將ASCII值更改爲二進制的視覺效果,例如1和0。 – Coleton 2014-09-29 04:25:39

回答

1

試試這個... PGM二進制印刷..

#include <stdio.h> 
#include <string.h> 


int main (void) { 

char c[20]; 
printf("Enter a word: "); 
scanf("%s",c);//here no need & 
    int j; 
int i; 
char *str = c; 
int length = strlen(str); 

for (i = 0; i < length; i++) 
{ 


    for(j=7;j>=0;j--)//for binary print; for char j=7, for int j=31 
    { 
    if((str[i]>>j&1)==1) 
    printf("1"); 
    else 
    printf("0"); 
    } 


    printf("\n%c = %d \n", str[i] , str[i]); 
} 
return 0; 
} 
+1

注意:手卷的'7'應該基於'CHAR_BIT'。 [示例](http://ideone.com/rKgBdF) – WhozCraig 2014-09-29 04:45:13