πŸš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
7 messages
7 total messages Started by Gunter Schelfhout Sat, 29 Nov 2003 13:32
binary string als int afdrukken in C
#3664
Author: Gunter Schelfhout
Date: Sat, 29 Nov 2003 13:32
7 lines
1290 bytes
Hoe kan een string (bv "1100100101001001") afdrukken als een int in C met
behulp van de functies in glibc?
Met printf?
Of bestaat daar een functie voor die decimale waarden omzet in binaire en
vice versa?
-- 
Blood, sweat & tears
Re: binary string als int afdrukken in C
#3665
Author: staf wagemakers
Date: Sat, 29 Nov 2003 16:24
29 lines
1621 bytes
On 2003-11-29, Gunter Schelfhout <nospam@please.com> wrote:
> Hoe kan een string (bv "1100100101001001") afdrukken als een int in C met
> behulp van de functies in glibc?
> Met printf?

er bestaat hievoor geen standaard functie voor in libc 
...of ik ken hem niet ;-)

het is echter niet zo moeilijk om van een "binstring" een integer te
maken, enkel karakter is bit*2^plaats waard.

        char str[] = "1111111111111111";
        int i=0;
        int shift=0;
        char *c;

        for (c=str+strlen(str)-1;*c!='\0';c--) {

              int bit=0;
              if(*c!='0') bit = 1;
              i+=(bit<<shift++);
        }
        printf("i = %d\n",i);

-- 
Staf Wagemakers

email:          staf at patat.org
homepage:       http://staf.patat.org
Re: binary string als int afdrukken in C
#3666
Author: Arnold Hendriks
Date: Sat, 29 Nov 2003 16:33
15 lines
1616 bytes
"staf wagemakers" <staf_nospam_@patat.org> wrote in message
news:slrnbshhuh.3sc.staf_nospam_@localhost.staflaptop...
> On 2003-11-29, Gunter Schelfhout <nospam@please.com> wrote:
> > Hoe kan een string (bv "1100100101001001") afdrukken als een int in C
met
> > behulp van de functies in glibc?
> > Met printf?
>
> er bestaat hievoor geen standaard functie voor in libc
> ...of ik ken hem niet ;-)
Dat laatste vrees ik :-)

De functies strtol/strtoul accepteren een 'base' parameter, die in het
gebied 2 (binair) t/m 36 mag liggen.
Re: binary string als int afdrukken in C
#3667
Author: Gunter Schelfhout
Date: Sat, 29 Nov 2003 23:43
45 lines
2254 bytes
staf wagemakers wrote:

> On 2003-11-29, Gunter Schelfhout <nospam@please.com> wrote:
>> Hoe kan een string (bv "1100100101001001") afdrukken als een int in C met
>> behulp van de functies in glibc?
>> Met printf?
> 
> er bestaat hievoor geen standaard functie voor in libc
> ...of ik ken hem niet ;-)
> 
> het is echter niet zo moeilijk om van een "binstring" een integer te
> maken, enkel karakter is bit*2^plaats waard.
> 
>         char str[] = "1111111111111111";
>         int i=0;
>         int shift=0;
>         char *c;
> 
>         for (c=str+strlen(str)-1;*c!='\0';c--) {
> 
>               int bit=0;
>               if(*c!='0') bit = 1;
>               i+=(bit<<shift++);
>         }
>         printf("i = %d\n",i);
> 

Ik had het ondertussen in die aard opgelost: (eenvoudig, zonder checking en
voor range 0-255)
char* dec_bin(int dec) {
        char* c;
        char* bin;
        
        bin = (char *) malloc(9 * sizeof(char));
        int k;
        for (k = 7; k >= 0; k--) {
                c = "0";
                if ((1 << k) & dec)
                        c = "1";
                strcat(bin, c);
        }
        return bin;
}
-- 
Blood, sweat & tears
Re: binary string als int afdrukken in C
#3668
Author: Gunter Schelfhout
Date: Sat, 29 Nov 2003 23:44
22 lines
1852 bytes
Arnold Hendriks wrote:

> 
> "staf wagemakers" <staf_nospam_@patat.org> wrote in message
> news:slrnbshhuh.3sc.staf_nospam_@localhost.staflaptop...
>> On 2003-11-29, Gunter Schelfhout <nospam@please.com> wrote:
>> > Hoe kan een string (bv "1100100101001001") afdrukken als een int in C
> met
>> > behulp van de functies in glibc?
>> > Met printf?
>>
>> er bestaat hievoor geen standaard functie voor in libc
>> ...of ik ken hem niet ;-)
> Dat laatste vrees ik :-)
> 
> De functies strtol/strtoul accepteren een 'base' parameter, die in het
> gebied 2 (binair) t/m 36 mag liggen.

We zullen eens kijken in de documentatie.
Bedankt.
-- 
Blood, sweat & tears
Re: binary string als int afdrukken in C
#3669
Author: Gunter Schelfhout
Date: Sun, 30 Nov 2003 08:35
21 lines
1650 bytes
Gunter Schelfhout wrote:

[knip]

>> 
>> De functies strtol/strtoul accepteren een 'base' parameter, die in het
>> gebied 2 (binair) t/m 36 mag liggen.
> 
> We zullen eens kijken in de documentatie.
> Bedankt.

Een eigenaardigheidje:
...
printf("%i\n", strtol(bin, NULL, 2));
...
geeft altijd hetzelfde resultaat, ongeacht de string van 32 bits.
Een printout van bin geeft bv:
11011000000011001100100000100000

-- 
Blood, sweat & tears
Re: binary string als int afdrukken in C
#3675
Author: Arnold Hendriks
Date: Sun, 30 Nov 2003 13:17
18 lines
1878 bytes
"Gunter Schelfhout" <nospam@please.com> wrote in message
news:WYhyb.52209$yO2.1718407@phobos.telenet-ops.be...

> Een eigenaardigheidje:
> ...
> printf("%i\n", strtol(bin, NULL, 2));
> ...
> geeft altijd hetzelfde resultaat, ongeacht de string van 32 bits.
> Een printout van bin geeft bv:
> 11011000000011001100100000100000

32 bits is een overflow op veel machines, en dan:

       unless the origοΏ½-
       inal (non-negated) value would  overflow;  in  the  latter
       case,  strtoul()  returns  ULONG_MAX  and  sets the global
       variable errno to ERANGE.  Precisely the  same  holds  for
       strtoull() (with ULLONG_MAX instead of ULONG_MAX).
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads