How can I convert a word such as 'A' to the number represented in ASCII ? Another question is how can i convert a decimal number to binary number? Is any function in c allows us to do that?
Thanx for any help
How can I convert a word such as 'A' to the number represented in ASCII ? Another question is how can i convert a decimal number to binary number? Is any function in c allows us to do that?
Thanx for any help
int num;
num = (int) 'A';
To convert a int to a binary string. One way is function itoa(), if your compiler has it.
And here's a clever function to print in binary that someone posted:Code:#include <stdlib.h> int main(void) { int num = 255; char str[33]; itoa(num,str,2); }
Code:void printbits( int x ) { int y; for( y = 31; y >= 0; y-- ) printf("%d",(x&(1<<y))?1:0); printf("\n"); }
will this also work?
int i;
i='A';
printf("%d",i)//prints ASCII value of 'A'
>will this also work?
Yes
big thanx for you guys!!
now another question is how can I mask those binary #
for ex:
111000101
if i want shift right to 3, it will become
101111000,
just like what shr does in assembly language, but how can i do that in c?
is any function allows us to do that?
Last edited by Supra; 03-29-2002 at 05:57 PM.
X>>Y (Shifts X's bits Y steps to the right)
X<<Y (Shifts X's bits Y steps to the left)
MagosX.com
Give a man a fish and you feed him for a day.
Teach a man to fish and you feed him for a lifetime.
asm
{
DW BINARY NUMBER = "=x"
}
As long as you can find a way of replacing x with the number, that works...
really big thanks to you all!!
my last two questions are
1. how can i "and" or "or" those binary in c#?
ex:
2. how can i convert binary # back to decimal #?Code:1100110 (and) 0011100 ---------------------- 0000100
or where can i find the tutorial web site about them?
Thanx again
>1. how can i "and" or "or" those binary in c#?
Well in C:
& - binary AND
| - binary OR
I don't know about C#, but I guess it's the same as in C.
>2. how can i convert binary # back to decimal #?
>or where can i find the tutorial web site about them?
Binary number
bn ... b3 b2 b1 b0
Decimal
2^0 b0 + 2^1 b1 + 2^2 b2 + ... + 2^n bn
Not again!!!
Hereīs my code; itīs my first real C-program:
klausiCode:#include <stdio.h> #include <string.h> #define PUFFER 256 void asctobin(void); /* converts ASCII-characters into binary digits */ void bintoasc(void); /* converts binary digits into ASCII characters */ unsigned char bin[]={1,2,4,8,16,32,64,128}; int main(void) { char chose; for(chose=0;chose<40;chose++,printf("\n")) ; /* clear screen */ again: printf("Enter \'A\' to convert ASCII to binary or \'B\' to convert binary into ASCII: "); scanf("%c",&chose); if(chose=='A' || chose=='a') asctobin(); else { if(chose=='B' || chose=='b') bintoasc(); else{ rewind(stdin); /* back to the begin of stdin; if more then one character was entered */ goto again; } /* only accepts 'A','a','B' and 'b' as inputs */ } return 0; } void asctobin(void) { char string[MAX],c; int count,len; printf("Enter string (max length: 255 characters): "); rewind(stdin); /* back to the begin of stdin */ fgets(string,PUFFER-1,stdin); len=strlen(string); for(;len>0;len--) /* as often as the value for the length of the inputed string */ { c=*string; /* the character string points to at the moment */ for(count=7;count>=0;count--) { if(c>=bin[count]) { printf("1"); c-=bin[count]; }else printf("0"); } *string++; printf(" "); } } void bintoasc(void) { char string[MAX],c; int count=7,len; printf("Enter digits (max 255):"); rewind(stdin); /* back to the begin of stdin */ fgets(string,PUFFER-1,stdin); len=strlen(string); for(;len>0;len--) /* as often as the value for the length of the inputed string */ { if(*string=='1') { c+=bin[count], --count; }else if(*string=='0') --count; if(count==0) { printf("%c",c); count=7; c=0; } *string++; } }
Last edited by klausi; 04-01-2002 at 10:50 AM.
When I close my eyes nobody can see me...
thanx you all very much, but i still have questions about masking
number
I wrote a small program:
I can't mask the numberCode:#include <stdlib.h> int main(void) { unsigned char i='a'; unsigned char b='c'; char str[33]; i='a'+'c'; printf("%d\n",i); itoa(i,str,2); printf("%s\n", str); i << 3; printf("%d\n",i); //still can't shift i & 3; printf("%d\n",i); // still can't and return 0; }
cna anyone tell me what's wrong with it?
really appreciate
That is the same as typing this somewhere in your code:Originally posted by Supra
i << 3;
i & 3;
I can't mask the number
cna anyone tell me what's wrong with it?
really appreciate
1+6;
As you see, it does nothing. You have to store your result somewhere:
i=(i << 3); and i=(i & 3);
Or in an even simplier way:
i <<= 3; and i &= 3;
Good luck!
That was me replying above, for some reason you're not logged in if you enter this site from Hotmail.