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

avec Java Discussion :

convertir un type (int ou string) en n bytes


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 62
    Points
    62
    Par défaut convertir un type (int ou string) en n bytes
    bonjour,

    comment convertir un type (int ou string) en n bytes? plus précisement comment créer le packet suivant :
    on a un objet de type Byte[]
    on veut mettre :
    un string sur le 3 premiers bytes; byte[0] 1 2
    un int sur le deux suivant
    un string sur les 5 restants

    merci !

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Je vais répondre dans l'ordre


    String -> byte: utiliser soit la méthode getBytes(String encoding) soit passer par la classe encoder.
    int -> byte[]: tu ne fera jamais tenir un int sur deux byte, il en faut 4 en java. Ensuite, tout dépend si tu veux du little endian ou du big endian.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Je précise quand même que si on a besoin d'un int sur deux bytes, ça s'appelle un short.

    À noter aussi que parfois, pour représenter un "short de 0 à 2^16", autrement dit un short non signé, on utilise souvent un int en faisant gaffe à pas lui assigner du négatif ou des valeurs trop grandes. Dans ce cas, pour le faire tenir sur 2 bytes, il suffit de ne prendre que les deux bytes de poids faible et d'ignorer le reste.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 62
    Points
    62
    Par défaut
    bon effectivement un int c'est plus gros, oublions le !
    voila je souhaite mettre

    String "bidule";// ldans les trois première bytes
    String "azerty";
    String "55555"; // dans les 4 derniers bytes

    dans

    byte[] myByte; //supposons qu'il fait 10 bytes.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Points : 402
    Points
    402
    Par défaut
    Un string a une taille variable de caractère, si tu utilise un encodage ASCII pour un string de taille n t'a besoin de n bytes donc ton "bidule" (length=6) sur 3 bytes c'est IMPOSSIBLE!!

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 156
    Points : 190
    Points
    190
    Par défaut
    A la rigueur tu peut les tronquer en utilisant substring

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 62
    Points
    62
    Par défaut
    oui mais c'est pas ça le problème !!

    bon je récitifier :

    String "kk"; // les 4 premères bytes
    String "1"; // les 4 seconds
    String "A";

    comment les mettre dans un byte[] de 12 bytes ???

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    comme je l'ai dit, tu convertit tes string en byte[] en utilisant la méthode String.toBytes(String encoding). Une fois que t'as ton array de byte, tu prend dedans les bytes dont tu as besoin pour constituer ton tableau final.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 37
    Points : 62
    Points
    62
    Par défaut
    ça existe cette méthode toBytes ??

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    getBytes(String encoding) , pas tobytes


    Suffit de lire l'api

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 104
    Points : 135
    Points
    135
    Par défaut
    Salut,

    tu peux utiliser aussi la classe ByteBuffer qui gère justement ce problème de conversion en byte et l'ordre (big ou little endian)

Discussions similaires

  1. Comment convertir un type int en type string
    Par vandeyy dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 05/08/2014, 14h41
  2. convertir un type null en string (re)
    Par pierrot67 dans le forum Bases de données
    Réponses: 8
    Dernier message: 01/01/2007, 19h27
  3. Réponses: 10
    Dernier message: 04/05/2006, 23h55
  4. Réponses: 3
    Dernier message: 23/02/2006, 09h37
  5. [LG]Convertir le type double en string
    Par @tom@ dans le forum Langage
    Réponses: 8
    Dernier message: 18/01/2004, 19h20

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