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 :

Caster String en byte sans qu'aucun caractère ne change


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut Caster String en byte sans qu'aucun caractère ne change
    Bonjour,
    Je voudrais caster un String en byte sans qu'aucun caractère ne change, exemple:
    mon String est égal à [B@17a2457 et je voudrais que mon byte soit [B@17a2457

    Je récupère ce String de ma base de données sous mySQL, ainsi je le reçois en String et non en byte du fais que le champs sauvegardant [B@17a2457 est de type Text.

    merci pour votre aide, et si vous avez des questions vous pouvez me les poser afin que je développe un peu plus sur mon sujet.

  2. #2
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Depuis ton instance de String tu peux récupérer le tableau de bytes correspondant en appelant machaine.getBytes()

    Tu n'essayerais pas de corriger des problèmes de caractères accentués par hasard?
    Je ne suis pas mort, j'ai du travail !

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    En faite quand j'essaye getBytes(), ça me retourne [B@11d72ca au lieu de [B@17a2457
    Merci quand même.

    Non du tout, de base, je transmet un tableau de byte à ma base de données sur un champ Text sauf que quand je récupère ça sur mon appli, ça me renvoie un String et je n'arrive pas à garder identiquement [B@17a2457 quand je le caste.

  4. #4
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Sans un bout de code pour nous montrer ce que tu essayes de faire et à quel endroit le fonctionnement attendu n'est pas le bon, je ne peux rien faire malheureusement.
    Je ne suis pas mort, j'ai du travail !

  5. #5
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Juste comme ça en passant : "[B@17a2457" ça c'est "l'addresse" de ton tableau de bytes... pas son contenu.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    Désolé, voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		    	String textConsultEnc = result.getObject(resultMeta.getColumnCount()).toString();
    		    	System.out.println(textConsultEnc);// affiche [B@17a2457
    		    	byte[] textEnc = textConsultEnc.getBytes();
    		    	System.out.println(textEnc);// affiche [B@11d72ca
    		    	System.out.println(decrypter(textEnc, cleCrypt())); // decrypter est une fonction qui me sert à décrypter le texte encodé

  7. #7
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    C'est donc bien ce que je disais tu affiches l'adresse du tableau et pas son contenu, donc forcement "ça change".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.err.println(""+new String(bytes));
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.err.println(""+bytes);
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    Et comment avoir son contenu svp? merci

  9. #9
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    J'ai donné la solution juste au dessus.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    Merci beaucoup

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    En faite je ne vois pas où placer mon new String(bytes) du fait que lorsque je récupère mes données j'effectue déjà un new String?

  12. #12
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Est tu sur que les données dans la DB sont valide ?

    Si oui alors tu ne devrais logiquement pas avoir de problèmes. (Sinon dans le bout de code posté je ne vois qu'un toString)

    Mais avec ceci j'ai un gros doute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String textConsultEnc = result.getObject(resultMeta.getColumnCount()).toString();
    System.out.println(textConsultEnc);// affiche [B@17a2457
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    Oui, mais si j'enregistre l'adresse, ça ne signifie pas que les bytes sont enregistrées aussi?

  14. #14
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Non pas vraiment. Mais c'est pas compliqué de regarder ce qu'il y'a dans la DB en fait pour s'en assurer...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    D'accord, merci, ça signifie donc que je ne récupère qu'une adresse vide.

  16. #16
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    De ce que je comprends et au vu des éléments, tes données stockée dans la BD (si c'est toi qui les stocké) on mal été stockées, tu as stocké des addresse de tableau de bytes...

    Donc tu récupères une chaine de caractères de type [B@7663A01
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    Oui c'est bien ça.

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    Je vais vous montrer ma méthode qui génère tout cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public static byte[] encrypter(final String message, SecretKey cle)
    	throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
    		Cipher cipher = Cipher.getInstance("DESede");// getInstance() = Renvoyer une instance de l'objet pour un algorithme particulier dont l'implémentation est celle fournie par le fournisseur précisé
    		cipher.init(Cipher.ENCRYPT_MODE, cle); //Initialiser la classe pour le mode de fonctionnement précisé (Cipher.ENCRYPT_MODE et Cipher.DECRYPT_MODE)
    		byte[] donnees = message.getBytes(); // getBytes() = encode un jeu de caractères en une séquence d'octets
     
    		return cipher.doFinal(donnees); //Ajouter la dernière partie des données à traiter et générer le résultat
    	}

  19. #19
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 073
    Points : 7 978
    Points
    7 978
    Par défaut
    Fonction sans interêt pour ton problème tu dévies du sujet la.

    Qu'est-ce qui te pose encore problème maintenant ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2014
    Messages : 102
    Points : 36
    Points
    36
    Par défaut
    Je ne vois pas comment stocker les bytes dans ma base et cette fonction est celle qui me serre à coder un texte en bytes et après j'enregistre cela dans ma base.
    Est-ce que je devrais changer le type de données de ce champ et le mettre en "BIT" ou plutôt "BINARY" ? Afin de récupérer un tableau byte.

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/02/2013, 07h50
  2. Caster une String en byte sans getByte()
    Par goboben dans le forum Langage
    Réponses: 7
    Dernier message: 15/10/2008, 14h32
  3. Réponses: 3
    Dernier message: 15/06/2007, 14h53
  4. [C#] Conversion d'un string en byte[] et inversement
    Par david71 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/12/2004, 15h10
  5. [String]Recherche d'une chaine de caractères dans une autre
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 3
    Dernier message: 29/07/2004, 11h51

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