OVH Cloud OVH Cloud

Codage BCD

18 réponses
Avatar
Yo
Bonjour,

Selon un protocole de communication, je dois coder une date en BCD sur
6 octets.

Si j'ai bien compris le BCD, le codage du 20 Décembre 2010 serait :

date[0] = 0x20;
date[1] = 0x12;
date[2] = 0x10;

Mais cela ne donne que 3 octets.

Quelqu'un peut il confirmer (ou infirmer) mon codage, et éventuellement
m'indiquer comment je peux stocker la date sur 6 octets au lieu de 3 ?

Merci.

8 réponses

1 2
Avatar
Olivier Miakinen
Le 07/10/2010 18:48, Michel__D a écrit :

[...] enfin bref on n'est toujours pas avancé pour autant sur le format !



Moi j'aurais bien une suggestion pour Yo.

Il implémente un truc au hasard, celui qu'il préfère. S'il se rend
compte que le machin à l'autre bout n'est pas content, ou si cela donne
une date incorrecte, alors il saura que ce n'était pas bon et il essaye
autre chose jusqu'à ce que ça marche. Inversement, si la date est la
bonne ou s'il n'y a aucun moyen de savoir qu'elle était mauvaise (ce qui
revient à peu près au même) il ne touche plus à rien.

N'est-ce pas une idée qu'elle est bonne comme idée ?
Avatar
espie
In article <4cae1df0$,
Olivier Miakinen <om+ wrote:
Le 07/10/2010 18:48, Michel__D a écrit :

[...] enfin bref on n'est toujours pas avancé pour autant sur le format !



Moi j'aurais bien une suggestion pour Yo.

Il implémente un truc au hasard, celui qu'il préfère. S'il se rend
compte que le machin à l'autre bout n'est pas content, ou si cela donne
une date incorrecte, alors il saura que ce n'était pas bon et il essaye
autre chose jusqu'à ce que ça marche. Inversement, si la date est la
bonne ou s'il n'y a aucun moyen de savoir qu'elle était mauvaise (ce qui
revient à peu près au même) il ne touche plus à rien.

N'est-ce pas une idée qu'elle est bonne comme idée ?



Si d'aventure tu ne blagues, non, ca pue grave comme idee.

C'est avec des implementations a la con sans specs (ou des specs pourries)
qu'on se retrouve avec un beau merdier general.

Normalement, si le posteur original a un minimum d'ethique, il doit essayer
de se procurer des vraies specs qui expliquent precisement ce qu'il est
cense faire (si ca trouve, il les a, il nous a juste explique un peu de
travers). S'il ne peut pas, il faut qu'il explique aux gens qui lui ont
"commande" son programme que c'est foireux, qu'il ne peut pas travailler
avec des documents aussi flous (et donc demander quelque chose de plus
precis).

Faire les choses en devinant, c'est la garantie que ca va marcher... jusqu'a
ce que ca casse, pour le cas particulier bizarre ou les specs sont en fait
subtilement differentes. Genre, planter le 1er janvier de l'an prochain, quand
precisement tout le monde sera en vacances (genial...)
Avatar
Olivier Miakinen
Le 07/10/2010 22:13, Marc Espie m'a répondu :

N'est-ce pas une idée qu'elle est bonne comme idée ?



Si d'aventure tu ne blagues, non, ca pue grave comme idee.



Absolument. Avec cette boutade je voulais faire réagir Yo, car sans
les specs aucune des suggestions qu'on lui fait ne peut être sûre de
fonctionner.

C'est avec des implementations a la con sans specs (ou des specs pourries)
qu'on se retrouve avec un beau merdier general.

Normalement, si le posteur original a un minimum d'ethique, il doit essayer
de se procurer des vraies specs qui expliquent precisement ce qu'il est
cense faire (si ca trouve, il les a, il nous a juste explique un peu de
travers). S'il ne peut pas, il faut qu'il explique aux gens qui lui ont
"commande" son programme que c'est foireux, qu'il ne peut pas travailler
avec des documents aussi flous (et donc demander quelque chose de plus
precis).

Faire les choses en devinant, c'est la garantie que ca va marcher... jusqu'a
ce que ca casse, pour le cas particulier bizarre ou les specs sont en fait
subtilement differentes. Genre, planter le 1er janvier de l'an prochain, quand
precisement tout le monde sera en vacances (genial...)



Voilà. Merci de l'avoir exposé si clairement.

--
Olivier Miakinen
Avatar
Yo
Dans son message précédent, Olivier Miakinen a écrit :
Le 07/10/2010 22:13, Marc Espie m'a répondu :

N'est-ce pas une idée qu'elle est bonne comme idée ?



Si d'aventure tu ne blagues, non, ca pue grave comme idee.



Absolument. Avec cette boutade je voulais faire réagir Yo, car sans
les specs aucune des suggestions qu'on lui fait ne peut être sûre de
fonctionner.

C'est avec des implementations a la con sans specs (ou des specs pourries)
qu'on se retrouve avec un beau merdier general.

Normalement, si le posteur original a un minimum d'ethique, il doit essayer
de se procurer des vraies specs qui expliquent precisement ce qu'il est
cense faire (si ca trouve, il les a, il nous a juste explique un peu de
travers). S'il ne peut pas, il faut qu'il explique aux gens qui lui ont
"commande" son programme que c'est foireux, qu'il ne peut pas travailler
avec des documents aussi flous (et donc demander quelque chose de plus
precis).

Faire les choses en devinant, c'est la garantie que ca va marcher... jusqu'a
ce que ca casse, pour le cas particulier bizarre ou les specs sont en fait
subtilement differentes. Genre, planter le 1er janvier de l'an prochain,
quand precisement tout le monde sera en vacances (genial...)



Voilà. Merci de l'avoir exposé si clairement.



Je vous remercie de vos suggestgions. Malheureusement, pour le moment,
je n'ai pas plus d'infos, je ne dispose que d'un document de
description du protocole qui dit que la date se code en BCD sur 6
octets, mmais sans exemples.
J'attends de disposer d'un exemplaire du client qui doit se connecter à
mon serveur pour tâcher d'y voir plus clair. Je devrais sans doute
alors procéder comme le suggérait O. Miakinen, jusqu'à ce que mes
messages soient acceptés ... Ce n'est peut être pas "bien", mais je
n'ai guère le choix ...
Avatar
espie
In article <i8mjj0$j6l$,
Yo wrote:
Je vous remercie de vos suggestgions. Malheureusement, pour le moment,
je n'ai pas plus d'infos, je ne dispose que d'un document de
description du protocole qui dit que la date se code en BCD sur 6
octets, mmais sans exemples.
J'attends de disposer d'un exemplaire du client qui doit se connecter à
mon serveur pour tâcher d'y voir plus clair. Je devrais sans doute
alors procéder comme le suggérait O. Miakinen, jusqu'à ce que mes
messages soient acceptés ... Ce n'est peut être pas "bien", mais je
n'ai guère le choix ...



Ben si, tu as une part de choix. D'ou la mention d'ethique dans mon message.
Si on te demande de faire du mauvais boulot, tu peux refuser et demissionner.
Je ne dis pas que c'est facile, ni qu'il faut en arriver la, mais se retrouver
a devoir implementer du protocole sans specs reelle, ca n'est absolument pas
normal, et si tu fais ca au pif, tu es sur que ca va mettre quelqu'un d'autre
dans la merde plus tard...
Avatar
Yo
Marc Espie a pensé très fort :
In article <i8mjj0$j6l$,
Yo wrote:
Je vous remercie de vos suggestgions. Malheureusement, pour le moment,
je n'ai pas plus d'infos, je ne dispose que d'un document de
description du protocole qui dit que la date se code en BCD sur 6
octets, mmais sans exemples.
J'attends de disposer d'un exemplaire du client qui doit se connecter à
mon serveur pour tâcher d'y voir plus clair. Je devrais sans doute
alors procéder comme le suggérait O. Miakinen, jusqu'à ce que mes
messages soient acceptés ... Ce n'est peut être pas "bien", mais je
n'ai guère le choix ...



Ben si, tu as une part de choix. D'ou la mention d'ethique dans mon message.
Si on te demande de faire du mauvais boulot, tu peux refuser et demissionner.
Je ne dis pas que c'est facile, ni qu'il faut en arriver la, mais se
retrouver a devoir implementer du protocole sans specs reelle, ca n'est
absolument pas normal, et si tu fais ca au pif, tu es sur que ca va mettre
quelqu'un d'autre dans la merde plus tard...



Je ne vais peut-être pas en arriver là ! D'ici quelques jours (?), je
devrais disposer d'un des appareils clients qui doivent se connecter à
mon serveur. En modifiant le codage, je devrais bienf inir par trouver
celui que le client accepte (pour lequel il m'envoie un ACK). Le tout,
c'est que mon responsable soit informé de la chose ...
Avatar
espie
In article <i8uj8t$v32$,
Yo wrote:
Je ne vais peut-être pas en arriver là ! D'ici quelques jours (?), je
devrais disposer d'un des appareils clients qui doivent se connecter à
mon serveur. En modifiant le codage, je devrais bienf inir par trouver
celui que le client accepte (pour lequel il m'envoie un ACK). Le tout,
c'est que mon responsable soit informé de la chose ...



Tu vas donc te retrouver avec un truc qui marche par hasard, sans aucune
reelle garantie que tu fais ce qu'il faut. Pas tres solide comme approche.
Si tu preferes, c'est du mauvais boulot. Alors, c'est peut-etre que toi et
ton responsable n'en avez rien a foutre, mais il n'y a pas de quoi etre
fier.

Tu ne nous as pas dit quel type d'appareil c'etait. Si ca a de vagues chances
d'etre utilise pour quelque chose d'important, dans la plupart des metiers
d'ingenierie, ce que tu preconises serait une grave faute professionnelle.
Il n'y a guere qu'en informatique que c'est encore le farwest...
Avatar
Yo
Marc Espie avait prétendu :
In article <i8uj8t$v32$,
Yo wrote:
Je ne vais peut-être pas en arriver là ! D'ici quelques jours (?), je
devrais disposer d'un des appareils clients qui doivent se connecter à
mon serveur. En modifiant le codage, je devrais bienf inir par trouver
celui que le client accepte (pour lequel il m'envoie un ACK). Le tout,
c'est que mon responsable soit informé de la chose ...



Tu vas donc te retrouver avec un truc qui marche par hasard, sans aucune
reelle garantie que tu fais ce qu'il faut. Pas tres solide comme approche.
Si tu preferes, c'est du mauvais boulot. Alors, c'est peut-etre que toi et
ton responsable n'en avez rien a foutre, mais il n'y a pas de quoi etre
fier.

Tu ne nous as pas dit quel type d'appareil c'etait. Si ca a de vagues chances
d'etre utilise pour quelque chose d'important, dans la plupart des metiers
d'ingenierie, ce que tu preconises serait une grave faute professionnelle.
Il n'y a guere qu'en informatique que c'est encore le farwest...



Il s'agit de connecter un terminal de vente sur un serveur, pour une
application de commerce. Je ne peux pas en dire beaucoup plus, mais ça
ne met en jeu la vie de personne, si ça peut vous rassurer ...
1 2