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

Langage Java Discussion :

Convertir une chaine binaire en type long


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 43
    Points : 34
    Points
    34
    Par défaut Convertir une chaine binaire en type long
    Bonjour,

    Je sais que ma demande va vous paraitre bizarre mais j'aimerais (je dirais meme plus j'ai besoin) de convertir une chaine binaire en un type long "a la main". La raison est toute bête, je travaille sur une appli flex qui doit communiquer avec un serveur. Une chaine de bytes est envoyé a ce serveur qui a un moment donne doit interpréter un long. Le problème étant que le type long n'existe pas en Flex. (AS3)

    Le serveur s’attend vraiment au type long JAVA. Pour l'instant je récupère mon nombre en binaire, je ne sais pas comment faire pour l'encoder ensuite sur 64bits. J'ai cru comprendre que la taille d'un long était de 2 bytes. C'est bien le cas.

    Je vous remerci d'avance pour vos réponses.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    La taille d'un long est de 8 octets en Java.
    Je n'ai pas entièrement compris ton problème.
    Tu as une chaine de caractères contenant des zéros et des uns et tu cherches à transformer cette chaine en un entier sur 64 bits, donc de type long ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 43
    Points : 34
    Points
    34
    Par défaut
    Salut,
    oui en gros c'est sa, j'ai besoin d'encoder ma chaine binaire sur 64 bits.

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 79
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par MedyAndFriends Voir le message
    Salut,
    oui en gros c'est sa, j'ai besoin d'encoder ma chaine binaire sur 64 bits.
    Il faut connaitre l'encodage de ton nombre binaire...(position bit poids fort ou faible)
    ensuite tu peux utiliser
    public static long parseLong(String s,int radix)
    de la classe Long, qui d'ailleurs a bien d'autres méthodes de conversion

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 43
    Points : 34
    Points
    34
    Par défaut
    Pardon, j'ai oublie de preciser que je travaillait sur flex/actionScript, mais que je devais reproduire le type long java.

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Pour savoir comment envoyer, faut déjà savoir comment ton serveur lit le long. La seule api standard en java pour lir des long depuis un stream, c'est DataInput, dont le comportement est décrit ici

    http://docs.oracle.com/javase/6/docs...readLong%28%29

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 43
    Points : 34
    Points
    34
    Par défaut
    Merci pour la doc, je vais y jeter un oeuil. Je suis stagiaire et ne maitrise pas toutes les étapes du processus, ce que je sais c'est que j'encrypte ma chaine avec une clef AES avant de l'envoyer sous forme de string a mon serveur. Le problème étant que le serveur s'attend a trouver une valeur 64bits dans la chaine. Tout ce dont je dispose en Flex, ce sont des Doubles, mais sa ne suffit apparemment pas a contenir ma valeur qui est je pense trop importante.

    Je suis plus a la recherche de théorie finalement, j'imagine que la fonction que je vais devoir coder va fonctionner essentiellement a l'aide de décalages de bits et autres joyeusetés.

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Oula

    String <-> 64 bits, c'est antinomique.

    String n'a aucune notion de taille de bits, ce sont des caractères et c'est tout. Si tu veux envoyé un truc crypté en AES à un serveur, normalement ton moteur de cryptage a du te renvoyé un tableau d'octets, et c'est ça qu'il faut envoyer au serveur.

    Ensuite, coté serveur, tu lit le tableau de byte et tu le passe dans le décodeur AES tel quel.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 43
    Points : 34
    Points
    34
    Par défaut
    Je vais tenter de synthetiser mon probleme. C'est pas evident, meme moi je m'y perds.

    En gros, je construit un ByteArray dans lequel j'ecris plusieurs chaines de caractères. Pour une histoire de securite, je dois recuperer une date en milliseconde (le temps depuis 1975 ou un truc du genre).

    Je récupère cette valeur dans un type number, je l'affiche, le resultat est bon. Le problème se situe au moment ou j'ajoute ce résultat a mon ByteArray. Le mode d’écriture le plus proche du Long serait le Double.

    Le probleme, c'est qu'a a la lecture cote serveur, le resultat n'as plus rien a voir. Le serveur est hors de cause vu qu'il fonctionne des biens avec des applis Java.

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    Il ne faut pas mélanger des types numériques et du texte : il est peu probable que le programme Java qui va recevoir cela ait prévu de lire autre chose que du texte et rien que du texte, dans une String.

    Si tu veux passer un nombre au milieu de texte, tu le convertis d'abord en String, puis tu l'insères dans le texte. Et tu fais pareil de l'autre côté.

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    oui il faut éclaircir d'abord quel est concrètement le protocole avec le serveur avant de décider de comment le respecter

Discussions similaires

  1. Convertir une chaine binaire en INT
    Par Wiink dans le forum Requêtes
    Réponses: 6
    Dernier message: 22/08/2011, 12h59
  2. Convertir une chaine binaire en Real32
    Par clem67 dans le forum VB.NET
    Réponses: 3
    Dernier message: 24/05/2011, 19h00
  3. convertir une chaine en entier long
    Par boulhous dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/08/2007, 22h22
  4. convertir un reel en une chaine binaire(codage)
    Par jiji83 dans le forum Langage
    Réponses: 3
    Dernier message: 21/02/2007, 18h19
  5. Réponses: 6
    Dernier message: 14/06/2006, 15h27

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