IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Convert de Binary


Sujet :

Développement SQL Server

  1. #1
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut 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.

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    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

  3. #3
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    Oui tu as tout à fait raison. Or, si elle se compose de 12 octets ça sera quoi la solution ?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 009
    Billets dans le blog
    6
    Par défaut
    Tu n'as pas 12 octets, là tu en a 24 !!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    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

  6. #6
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    Oui je comprend mais dans ma table j'ai le type Binary(12)
    Donc comment je peux lire cette donnée lisiblement ?

  7. #7
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    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

  8. #8
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    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!

  9. #9
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    Quelle version, quelle table, quelle colonne ????

  10. #10
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    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.

  11. #11
    Membre confirmé Avatar de TheNet
    Inscrit en
    Juillet 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2006
    Messages : 83
    Par défaut
    Bingo!
    Il existe une fonction utilisateur qui fait ça d'une façon très simple!

    Merci à vous

  12. #12
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Ce serait intéressant de voir le code de cette fonction

    Je ne sais pas si cela est autorisé ...

    @++

  13. #13
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    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.

  14. #14
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    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

  15. #15
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Comment passez-vous de 40D871BEB851EB85 à 25030.98 ?

    @++

  16. #16
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    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

  17. #17
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Merci !

    @++

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 3
    Par défaut
    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.

  19. #19
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 254
    Par défaut
    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

  20. #20
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 3
    Par défaut
    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.

Discussions similaires

  1. Réponses: 7
    Dernier message: 21/04/2009, 11h31
  2. Requête paramétrée et CONVERT(binary ..)
    Par dymezac dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 18/01/2007, 16h23
  3. [SQL Server] Error converting data type varchar...
    Par Sir Tengu dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 13/06/2003, 11h46
  4. [Debutant] [Date] convertion date
    Par BenoitM dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 17/04/2003, 15h55
  5. Convertion de type VARIANT à type CString
    Par j_grue dans le forum MFC
    Réponses: 2
    Dernier message: 07/11/2002, 15h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo