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

Android Discussion :

Encodage sous Android


Sujet :

Android

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Encodage sous Android
    Bonjour J'ai un petit souci sous Android. Je m'explique.

    J'ai cette fonction en Java que je souhaite utiliser sous android. Elle converti un tableau de int en String de là meme manière que fonctionne le struct.pack en python.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static String a_to_str(int[] a) {
    		StringBuffer str = new StringBuffer();
    	    for (int i = 0; i<a.length*4; i++) 
    	    { 
    	        str.append((char)(0xFF & a[(i >> 2)] >>> 24- 8 * (i & 0x3)));
    	    }
    	    return str.toString();
     
    	}
    Le paramètre de la fonction est celui ci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int[] pk = { 0x93C467E3, 0x7DB0C7A4, 0xD1BE3F81, 0x0152CB56 };
    Mon seul souci c'est que ma chaine retournée qui devrait être encoder en 16 bit à non seulement 28 bits. Pourtant en lançant via la JVM avec un encodage Windows (ISO-99XX) ça marche bien. Mais quand je le lance à l'intérieur de mon programme Android, il code la valeur "0x93C467E3" (qui est trop long pour rentrer dans un int) sur 7 bits au lieu de 4bits.

    Quelqu'un a une solution a me proposer ? Comme avoir le même encodage sous Android que celui que j'ai sous Windows ?

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    J'avoue que je ne comprends pas le but... Stocker un array de int dans un byte[] ? (si j'ai bien compris la fonction)...

    Parce que à l’intérieur de String, c'est pas des bytes, et char=(presque)=int en java ! Donc cela ne correspondra à rien... Sans compter que c'est encodé en UTF-16 de toute manière à l'intérieur de String....

    (char)(0xFF & a[(i >> 2)] >>> 24- 8 * (i & 0x3)) peut renvoyer des caractères de contrôles... voire même (0xFE00 par exemple) demander un caractère suivant (32bits encodé en UTF-16)... Et pire encore des '\0' (fin de chaine)...

    Donc si le but est d'obtenir des bytes.... il faut retourner des byte[] et surtout pas des char[] et encore moins une String. On est dans un langage fortement typé, profitons en.

    Mon seul souci c'est que ma chaine retournée qui devrait être encoder en 16 bit à non seulement 28 bits.
    Désolé, je ne comprends rien.

    il code la valeur "0x93C467E3" (qui est trop long pour rentrer dans un int) sur 7 bits au lieu de 4bits.
    ????
    0x93C467E3 rentre parfaitement dans un int (32bits).



    De manière annexe, ne pas utiliser StringBuffer dans une fonction simple... préférer StringBuilder (c'est la même chose, sans les 'synchronized': StringBuffer est un StringBuilder thread-safe).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Nokia prépare un netbook sous Android
    Par Kerod dans le forum Mobiles
    Réponses: 3
    Dernier message: 01/07/2009, 09h53
  2. Nokia prépare un netbook sous Android
    Par Kerod dans le forum Actualités
    Réponses: 0
    Dernier message: 30/06/2009, 15h56
  3. La 2D sous Android
    Par Julien Bodin dans le forum Android
    Réponses: 7
    Dernier message: 18/03/2009, 21h04
  4. [Utilisation] Probleme encodage sous windows
    Par tittoto dans le forum Subversion
    Réponses: 2
    Dernier message: 28/05/2007, 09h44
  5. problème d'encodage sous Firefox
    Par marsupix dans le forum Langage
    Réponses: 2
    Dernier message: 03/05/2006, 22h14

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