binary char array representation to hex ? ( what's wrong with this C code )

Status
Not open for further replies.

Pigi_102

Member level 2
Joined
Nov 14, 2007
Messages
46
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,721
Hi all,
I have an arduino sketch code that works well and I'm convertin in c ansi but I'm having a (some) problem.

My input data is a char array like this:
Code:
pkt="10100000"

in arduino c I have this code:
Code:
int ret

 for (i = 0; i <  8; i++) {
    ret = (ret << 1) ^ ((pkt[i] & B00010000) ? 1 : 0);
 }
and the ret value, out of the loop is 160 ( which is correct ).

I have "translated" in:
Code:
 for (i = 0; i <  8; i++) {
    ret = (ret << 1) ^ ((pkt[i] & 0b00010000) ? 1 : 0);
 }

but ret value is 255, which obviously is wrong.

What I'm doing wrong ?

Thanks in advance

Pierluigi
 
Last edited by a moderator:

Your code is completely wrong.
you binary AND an ascii val (48 or 49 if I remember correctly) with one bit in pos 5 (val is 16 and that produces TRUE for both zero or one ascii vslues). Xor is also questionable in this position.

- - - Updated - - -

Have a look at my code in:
https://www.edaboard.com/threads/340997/#post1454632
 
xenos,
your code work.
Still can't understand the error in my code, but for the moment I'm fine with that.


Pihi
 

...
Code:
pkt[i] & B00010000
...

pkt has eigther 48 or 49 (ie eighter b0110000 or b0110001)
what should the (b00010000 & b0110000) produce as output?
what should the (b00010001 & b0110000) produce as output?

I do not see how this code should work in arduino.

Try replacing the b00010000 in your code with b00000001 (or just 1 ;-))
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…