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
Author: Gunter Schelfhout
Date: Sat, 29 Nov 2003 13:32
Date: Sat, 29 Nov 2003 13:32
7 lines
1290 bytes
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
Author: staf wagemakers
Date: Sat, 29 Nov 2003 16:24
Date: Sat, 29 Nov 2003 16:24
29 lines
1621 bytes
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
Author: Arnold Hendriks
Date: Sat, 29 Nov 2003 16:33
Date: Sat, 29 Nov 2003 16:33
15 lines
1616 bytes
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
Author: Gunter Schelfhout
Date: Sat, 29 Nov 2003 23:43
Date: Sat, 29 Nov 2003 23:43
45 lines
2254 bytes
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
Author: Gunter Schelfhout
Date: Sat, 29 Nov 2003 23:44
Date: Sat, 29 Nov 2003 23:44
22 lines
1852 bytes
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
Author: Gunter Schelfhout
Date: Sun, 30 Nov 2003 08:35
Date: Sun, 30 Nov 2003 08:35
21 lines
1650 bytes
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
Author: Arnold Hendriks
Date: Sun, 30 Nov 2003 13:17
Date: Sun, 30 Nov 2003 13:17
18 lines
1878 bytes
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