-
Convert de Binary
Bonjour,
SVP, j'ai trop cherché sur les forums le fait de convertir mon champ binary (sql server 2000) vers float mais j'ai rien trouvé de réponse.
Voici la valeur : 0x000040D871BEB851EB850000
Quelqu'un peut me dire c'est quoi la valeur lisible de ça ?
Merci d'avance.
-
Es-tu certain que ta valeur binaire est bien un type Float ????
Elle fait 12 octets, or un type Float simple précision est codé sur 4 octets, un double précision est codé sur 8 octets. Ça ne correspond pas à ton binaire
-
Oui tu as tout à fait raison. Or, si elle se compose de 12 octets ça sera quoi la solution ?
-
Tu n'as pas 12 octets, là tu en a 24 !!!
A +
-
non,non, il y en a bien 12
Ne pas oublier qu'en Hexa, un octet est représenté par 2 caractères
24 caractères=12 octets
-
Oui je comprend mais dans ma table j'ai le type Binary(12)
Donc comment je peux lire cette donnée lisiblement ?
-
Il faudra savoir à quoi elle correspond.
Perso, en l'état, je n'en tire rien, si c'est bien un nombre, il nous manque la façon dont il est codé.
A la limite l'utilisation qu'en fait le logiciel qui a écrit cette valeur pourrait te donner une piste
-
Le logicle qui a crypté ce champ est Sage, et je veux à travers de mon logiciel extrait la liste des Salaires des employes. C'est bon but!
-
Quelle version, quelle table, quelle colonne ????
-
C'est Sage 100 compatible avec SQL Server 2000
La table c'est : T_HST_SALAIRE
La colonne : SalaireBase
Le type est défini par l'utilisateur : TConstante qui se base sur Binary (Longeur : 12)
J'espère que j'étais clair.
-
Bingo!
Il existe une fonction utilisateur qui fait ça d'une façon très simple!
Merci à vous
-
Bonjour,
Ce serait intéressant de voir le code de cette fonction :)
Je ne sais pas si cela est autorisé ... :D
@++ ;)
-
Il ne s'agit pas d'une compta 100 mais d'une paye 100 SQL (qui peut certes être combiné avec la compta)
Je n'ai pas de doc sous la main pour la paye 100 SQL (je n'ai que quelques info pour la paye propriétaire et ce n'est pas les mêmes tables), je n'ai qu'une base d'un client.
JE ne trouve pas de réponse. Je pense que c'est un identifiant faisant en lien avec une autre table mais je ne trouve pas laquelle.
-
Bon après analyse de diverses procédures stockées, apparement la valeur est construite ainsi :
Flag1(1 octet) Flag2(1 octet) Nombre(8 octet) ou texte(10 octet) Remplissage(2 octets si nécessaire)
Si Flag2 =0, on a un nombre
Donc 000040D871BEB851EB850000 donne
Flag1 --> 00
Flag2 --> 00
Nombre --> 40D871BEB851EB85 = Flottant double précision = 25030.98
Remplissage --> 00 00
-
Comment passez-vous de 40D871BEB851EB85 à 25030.98 ?
@++ ;)
-
C'est simplement la représentation binaire d'un flottant double précision en mémoire selon la norme internationale IEEE754
Tu peux, par exemple, en consulter une explication sur cette page wikipedia --> http://fr.wikipedia.org/wiki/Float
-
-
Bonjour,
Je rencontre actuellement le même problème ouvert ici par l'internaute TheNet.
A savoir que j'utilise aussi SAGE avec SQL Server comme base de données. Ensuite, dans la table T_HST_SALAIRE j'aimerais récupérer toutes les valeurs présentes pour le champ "SalaireBase" afin de les exploiter (en PHP par exemple). Seulement ces valeurs sont cryptées et j'obtiens en résultat la même chose que présentée dans ce sujet.
Aucune solution n'ayant été postée au finale pour ce sujet, donc est-ce que quelqu'un aurait une solution à m'apporter svp ?
Merci par avance.
-
Perso, je n'ai plus accès actuellement aux applicatifs SAGE, je ne peux donc pas faire de recherche.
De mémoire, il me semble que j'avais trouvé une procédure stockée qui codait ce genre de données, mais je ne me souviens pas s'il existait aussi la même pour décoder la donnée.
Sinon, il faudrait pouvoir mettre les octets 3 à 10 dans la mémoire d'une variable de type Flottant double précision. Je ne sais pas si c'est faisable en PHP, mais en C, je pense que ça marcherait en jouant avec des pointeurs
-
Merci pour ta réponse sevyc64.
Oui, il doit bien y avoir une procédure stockée qui code ces données. Je la cherche mais je ne l'ai pas trouvée pour le moment. Elle pourrait au moins m'aider à comprendre le mécanisme de codage et ainsi me permettre de créer une procédure qui fasse l'inverse.