We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
hi Forum! I have declared an char-array, for a simple Data stream buffer of bits: char data[] = "101101010011111@". And now just want cast this items to a integer-value. How can i do this in simplest way, without sum the bits bitwise via pointer? cu O. Swid
>> What are we doing wrong, or what requirements are you not stating properly, that has caused you to reject the feedback given thusfar? << first time, excuse me for the multiposting! I started the first two threads from the office. But the Firm-Firewall noticed me, that my request cant be sent (this url is blocked from the Firewall). I was convinced, that my Postings are not arrived the Forum. Next day i started, this new thread from at home. >> Your use of "cast" here in a C forum is quite confusing, since "cast"....<< Sorry, I'v just been looking for the easiest way to convert a sequence of character, like example "11101" in a integer-Value. I solved this by dint of pointer before, but was looking for a better way. It was stupid from me, to confuse <cast> with <convert>, sorry! Thx for your help!
"Sorry, I'v just been looking for the easiest way to convert a sequence of character, like example "11101" in a integer-Value. I solved this by dint of pointer before, but was looking for a better way." There is no better way (to my knowledge) to convert a sequence of binary characters to an integer value than the ways that you've seen in your threads. That is, either explicitly convert while sequencing through your array (using a pointer or array index, and shift/add) or using strtol(). Knowing that there is no better way, now you are well equipped to choose the method that suits you.
>> Knowing that there is no better way, now you are well equipped to choose the method that suits you. << its certainly usefull! many thanks Dan!
One thing to note is that the LSB of the ASCII code for '0' is 0, and the LSB of the ASCII code for '1' is 1; thus a simple bitwise-AND with 0x01 will convert these particular ASCII codes to their numerical equivalents. Thus you can buid the integer by looping the following:
result = (result<<1) | (string[i]&0x01);
nice suggestion Andy! Thanks for your other postings too! They are very usefull.
Is this library function of any use to you? http://www.keil.com/support/man/docs/c51/c51_strtoul.htm In your case the base will be 2, of course.