![](templates/subSilver/images/CCSLogo.jpg) |
![CCS C Software and Maintenance Offers](templates/subSilver/images/forumAd6.jpg) |
View previous topic :: View next topic |
Author |
Message |
manisha
Joined: 03 Feb 2012 Posts: 29
|
Binary conversion |
Posted: Mon May 21, 2012 6:52 am |
|
|
hello everyone....
I have a small problem in hex to binary conversion.....
I have used itoa function and got binary string which is printed as correct value but the problem is in extracting the specific bits from the binary string...
We can extract by either shift operation or ANDing with 0x01 for 0th bit, 0x02 for 1st bit.... and so on. But the value which I am getting is always zero for any binary number.. Even if I use bit_test function it is always read as 0...
If anyone has a solution for this please guide me.... |
|
![](templates/subSilver/images/spacer.gif) |
temtronic
Joined: 01 Jul 2010 Posts: 9174 Location: Greensville,Ontario
|
|
Posted: Mon May 21, 2012 6:56 am |
|
|
PIC101...
please show us your code as there are dozens of solutions |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19369
|
|
Posted: Mon May 21, 2012 7:12 am |
|
|
It is not at all clear from your question, what your problem really is. Possibly a misunderstanding of 'what' types actually are?.
If you are using 'itoa', then you are starting _with_ a binary number, and turning it into a 'string' (an ASCII representation of this number). It is the original binary number on which you could use 'bit_test' to get the bits.
Code: |
int fred;
char str[10];
int1 abit;
int8 len;
fred = 10; //The variable 'fred' now contains the binary value b00001010
//Remember variables are stored in binary inside the processor
itoa(fred,2,str);
//The array 'str', now contains the ASCII characters representing fred
//_not_ a binary value, but the string representation of this value
abit=bit_test(fred,1);
//abit now contains '1' the second binary bit of fred.
len=strlen(str); //work out how long the string is -> 4bytes in this case
//1010
if (str[len-2]=='1')
abit=1;
else
abit=0;
//Do the same working from the 'string'. Now you have to find how long
//the string is, and work 'back' from there, doing text comparisons
|
From the string, you have to perform 'text' comparisons to find the bit value. Conversely from the original binary number you can just use bit tests.
I suspect you are getting confused about the difference between a binary number, and a string.
Best Wishes |
|
![](templates/subSilver/images/spacer.gif) |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|