salut,
c possible de faire ça:?Code:
1
2
3
4
5 int a; char b[4]; a=*((int*)b);
merci
Version imprimable
salut,
c possible de faire ça:?Code:
1
2
3
4
5 int a; char b[4]; a=*((int*)b);
merci
Ou ton simplement :
Oui, c'est possible.Code:
1
2
3 int a; char b[4]; a = (int)b[0];
Jpense que oui
Oué mais la ça va prendre la valeur du premier car, ce n'est pas ce qu'il veut faireCitation:
Envoyé par gege2061
b[0] ça revient au même que *b puisque b est l'adresse du premier élément.Citation:
Envoyé par Gruik
vous pouvez me donner plus d'explication svp:?
Oui mais *b represente un caractere et ça retournera pas plus que la valeur maxi pour le type de *b
Ce n'est pas ce que veux le P.O.Citation:
Envoyé par gege2061
Euh oui mais c'est vrai dans les deux cas :koi:Citation:
Envoyé par Gruik
Donne la même chose :mrgreen:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <stdio.h> int main (void) { int a; char b[4] = {'a', 'b', 'c', 'd'}; a = *((int*)b); printf ("%c\n", a); a = b[0]; printf ("%c\n", a); return 0; }
@moon93 : en fait ça serait plus à toi de nous dire ce que tu pense faire de ce bout de code :?
Oui, mais si tu fais ça :Citation:
Envoyé par gege2061
Code:
1
2
3
4
5
6 a = *((int*)b); printf ("%d\n", a); a = b[0]; printf ("%d\n", a);
C'est techniquement possible, oui, mais ce n'est pas portable. (Force 8 sur l'Echelle de Goret qui en compte 10). Il y a des int de 2, 4 8 char, big-endian, little-endian, mid-endian... Dans la pratique, on ne fait pas ça.Citation:
Envoyé par moon93
Pour savoir quoi faire, il faut que tu indiques la signification de chaque char de b[4].
est ce que j'aurai le meme résultat en tapant:Code:
1
2
3
4
5
6 int a; char b[4]; a=(b[0]<<24)+(b[1]<<16)+(b[2]<<8)+b[3]; printf('%s',a);
Le format %s, c'est pas pour des int...Citation:
Envoyé par moon93
Dans le premier cas on pouvait avoir n'importe quoi, y compris des crashs (ce qui n'est pas du tout impossible sur un sparc par exemple qui force le respect de l'alignement).
Dans le second on a un comportement dependant de l'implementation (est-ce que char est signe ou pas) avec un risque de comportement indefini du au debordement.
Si tu veux manipuler un format binaire, il va falloir le definir et ensuite on peut discutter sur la maniere de faire les conversion vers et de ce format.
I
c un unsigned char
j'ai pas compri ce tu veux dire par:
'Si tu veux manipuler un format binaire, il va falloir le definir'?
a l'execution j'aurai un résultat!!!! une chaine genre: -118s
lorsque j'essaye d'afficher un int que j'ai défini.
j'utlise!!!Code:
1
2 printf ("%d\n", a);