VB/VB.Net [demande] explication sokets, protocole D.2

A

Anonymous

Invité
#1
Salut sur le sujet d'explication du protocole 2.0 de bouh2, je ne comprendre pas bien ceci :

Un integer de valeur 1 sera encodé de cette manière : 0 0 0 1 (4 octets dans tous les cas), 256 de cette manière : 0 0 1 0, et 255 de celle-ci 0 0 0 255. Le nombre maximum est donc 4 294 967 295 (en hex 0xFFFFFFFF) soit 255 255 255 255.
Pourquoi 256 = 0 0 1 0 et non pas 0 0 0 256 ? (comme l'exemple de 255 = 0 0 0 255)

je ne comprendre pas pourquoi le nombre maximum est 4 294 967 295 (pourquoi 255.255.255.255 pendant qu'on y ai ?)


Je comprend pas aussi ceci :

Et donc D. va envoyer l'integer directement sous forme d'octets. De cette manière au lieu d'envoyer 49 50 51 pour envoyer 123 il enverra 0 0 0 123.
quand j'envoie dans la boite de dialogue 123 , j'obtient :

31 32 33 , et non pas 0 0 0 123 ....


J'en profite aussi (et désolé ^^') :

Désormais je vais vous faire remarquer une petite nuance qui est toujours source de bugs au début. Il y a 2 manières de stocker un nombre en mémoire. En vérité il y a 2 sens. Sois remplir de gauche à droite soit de droite à gauche. Exemple 0 0 0 1 ou 1 0 0 0, c'est 2 fois le nombre 1, mais si on lit dans le mauvais sens on aura pas 1 mais 268 435 456
"c'est 2 fois le nombre 1" --> comment ça ? un peu étrange, je demande une petite explication merci ^^'

"Mais si on lit dans le mauvais sens on aura pas 1 mais 268 435 456" --> la aussi je comprend pas pourquoi on aurait ces valeur là...

merci d'avance pour votre aide !
 
Inscrit
31 Mars 2012
Messages
102
Reactions
0
#2
j'espaire ne pas dire de connerie .. :)

pourquoi 255.255.255.255 pendant qu'on y ai ? :
(et si tu veux juste le nombre c'est car un byte est = au maximum a 255)

car en gros c'est une base 255 (une base je sais pas la définition... mais en gros c'est) ... :
0,1,2,3,4,5,6,7,8,9 ça c'est une base "10" car a "10" on change de rang base 20 serait :
0,1,2,3...19

Pourquoi 256 = 0 0 1 0 et non pas 0 0 0 256 ? (comme l'exemple de 255 = 0 0 0 255) :
car 256 est plus grand que le max pour byte donc du coup on passe un rang

"Mais si on lit dans le mauvais sens on aura pas 1 mais 268 435 456" --> la aussi je comprend pas pourquoi on aurait ces valeur là...
ba car :

0 0 0 0 = 0 | 0 0 1 0 = 256 | 0 1 0 0 = (... plantage au calcul x))
en gros c'est encore l'histoire de la base 255 ^^' voila en espérant t'avoir aider ;P
 
A

Anonymous

Invité
#3
D'accord merci de ton aide !
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#4
:mrgreen:
nico1705 a dit:
j'espaire ne pas dire de connerie .. :)
car en gros c'est une base 255 (une base je sais pas la définition... mais en gros c'est) ... :
0,1,2,3,4,5,6,7,8,9 ça c'est une base "10" car a "10"
...
0 0 0 0 = 0 | 0 0 1 0 = 256 | 0 1 0 0 = (... plantage au calcul x))
Salut , en fait tu en as dit une quand meme (meme 2) :oops:
1ere : c'est une base 256 (0 a 255 = 256 valeurs) pourtant tu as bon pour la base 10 (0 a 9 = 10)


dans l'exemple c'est un integer (donc 4 bytes , un byte va de 0 a 255 , je nomme w x y z) ca se compte comme ca : integer = w*256*256*256 + x*256*256 + y*256 + z
avec w = 0 , x = 0 , y = 1 , z = 0 ca donne 0*256*256*256 + 0*256*256 + 1*256 + 0 = 256 :o

2ieme : 0 1 0 0 = 0*256*256*256 + 1*256*256 + 0*256 + 0 = 65536 (pas de plantage au calcul)

thomasdoudou a dit:
Et donc D. va envoyer l'integer directement sous forme d'octets. De cette manière au lieu d'envoyer 49 50 51 pour envoyer 123 il enverra 0 0 0 123.
quand j'envoie dans la boite de dialogue 123 , j'obtient :

31 32 33 , et non pas 0 0 0 123 ....
dans la boite de dialogue tu n'envois pas un integer (comme dans l'exemple) mais une serie de caracteres (string) , chaque caractere represente un byte , tu envoies "123" donc 3 caracteres (3 bytes) , je peu donc meme dire qu'avant 31 32 33 tu as 00 03 (car tu envois 3 caracteres)
si tu regardes a l'aide de ce tableau (dans les colonnes Hx car un byte est codé en hexa) :

tu verras que 1 = 31 , 2 = 32 et 3 = 33
 
A

Anonymous

Invité
#5
Merci tu m'a bien eclairé sur l'histoire de 256

Effectivement pour l'histoire du "123", il y a 00 03 , ça je l'ai bien compris et pour la signification des octets je l'avais aussi compris.

En tout cas merci beaucoup de ton aide c'est super sympas.
 
Inscrit
31 Mars 2012
Messages
102
Reactions
0
#6
merci toons tu ma bien "rectifier" ;) merci en tout cas je dirais plus ces 2 conneries :D et sinon résolut ?
 
A

Anonymous

Invité
#7
Oui le problème est Résolu. Merci à vous deux
 
Haut Bas