Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    From byte to String

    Salve a tutti,
    mi sapete dire come convertire un vettore di byte in una stringa, eliminando gli spazi?

    Vi posto il codice che ho scritto:

    codice:
    public String getText(byte [] readed , int Bytes){
        
          System.out.println("SONO DENTRO IL METODO GETTEXT()");
          String str="";
          int i;
        
          for(i=0;i<Bytes;i++){
            System.out.println(i);
            if(!Character.isWhitespace((char)readed[i])){
              
              str=new String (readed[i]);
            
            }
            
          }
        
        System.out.println(str);
          return str;
        
        }
    Grazie,
    Cristian (TAURUS)
    Believe in GOD, you could only have Benefits from him!!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Cosa vuol dire "eliminando gli spazi?"
    Comunque, per concatenare tutti i valori di un array di byte su una stringa, la cosa più semplice è questa:
    codice:
    String str = "";
    for(int i=0; i<mioArray.length; i++) str += (mioArray[i] != 32) ? (char) mioArray[i] : "";
    return str;
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Ciao,
    ho provato il codice ma mi da errore del tipo: Illegal Start Of Type, non capisco come mai.

    Comunque, ho realizzato un programma che comunica con la seriale del pc e attraverso questa manda sms.
    Il vettore di byte che ottengo, contiene anche spazi e vorrei visualizzare solamente l' OK del modem.


    Cristian
    Believe in GOD, you could only have Benefits from him!!

  4. #4
    Fatto, avevo sbagliato scrivendo length, avevo scritto length().
    Believe in GOD, you could only have Benefits from him!!

  5. #5
    Cavolo, non funziona.
    Per caso tu sai come utilizzare le javacomm?

    Cristian
    Believe in GOD, you could only have Benefits from him!!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    codice:
    public String getText (byte[] arr)
    {
        StringBuilder sb = new StringBuilder (arr.length);
    
        for (byte b: arr)
            if (b != 32)
                sb.append ((char) b);
    
        return sb.toString ();
    }
    È più efficiente. Nota: solo Java 5+
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Originariamente inviato da andbin
    codice:
    public String getText (byte[] arr)
    {
        StringBuilder sb = new StringBuilder (arr.length);
    
        for (byte b: arr)
            if (b != 32)
                sb.append ((char) b);
    
        return sb.toString ();
    }
    È più efficiente. Nota: solo Java 5+
    Soluzione un po' contorta.
    Inoltre, quando si converte da byte[] a stringa bisogna tenere conto del character set.
    In due righe si può fare così:
    codice:
    public String getText (byte[] arr)
    {
      String s = new String( arr, "UTF-8" );
      return s.replaceAll( " ", "" );
    }
    sostituendo eventualmente "UTF-8" con il proprio character set.

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da interarete
    Soluzione un po' contorta.
    Non la definirei "contorta".

    Originariamente inviato da interarete
    Inoltre, quando si converte da byte[] a stringa bisogna tenere conto del character set.
    Lo so benissimo.
    Tieni però presente che taurus82, che ha iniziato il thread, non ha parlato di alcun character-set e quindi bisognerebbe innanzitutto capire se lui sa cosa è un character-set e quale deve realmente gestire nel suo programma, ammesso che sappia da dove e come gli arrivano quei byte.

    Originariamente inviato da interarete
    In due righe si può fare così:
    codice:
    public String getText (byte[] arr)
    {
      String s = new String( arr, "UTF-8" );
      return s.replaceAll( " ", "" );
    }
    Indubbiamente, volendo gestire un charset specifico e volendo usare le espressioni regolari, è OK. Su questo non ci piove.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    na chicca che può essere molto utile quando bisogna convertire char in stringhe o stringhe in interi
    o quando bisogna andare a capo....
    Ciao ciao
    Al vostro Servizio come sempre!!!!

    public class prova1 {

    public static void main(String args[]) {

    /**
    *
    * Crea un char a con valore 1
    * rea un char c con valore 3
    * Poi crea un array di char b con valori e in pos 0 ed r in pos 1
    * Il primo lo si può stampare tranquillamente attaccandolo ad una stringa
    * Conviene sempre e comunque attccare uno e piu char ad una stringa, seppur vuota
    * Java procede ad invocare automaticamente un processo di conversione dei chars in stringhe
    *
    * Per stampare un array di char li si puo selezionare singolarmente
    * La soluzione diventa discutibile se la dimensione dell'array comincia a lievitare
    * Altrimenti si invoca il newString() a cui passiamo come parametro lì'array di chars...
    *
    */

    char a = '1'; char c='3';
    char b[]=new char[]{'e','r'};
    System.out.println(""+a);
    System.out.println (a+""+c);
    System.out.println(""+b[0]+b[1]);

    System.out.println(new String(b));

    /**
    * CONVERSIONE DA STRINGA A INTERO....
    * System.out.println(Integer.valueOf("233").intValue ());
    *
    * Questa era la vecchia procedura....
    * Non ne vale la pena
    * basta usare il metodo piu spicciolo Integer.parseInt (String x)
    * che riceve una stringa e restituisce un intero...
    * Look up the example...
    */

    String number = "233";
    int numero = Integer.parseInt (number);
    System.out.println(numero);
    //OPPURE BREVEMENTE
    System.out.println(Integer.parseInt("233"));


    char invio = (13);
    /**
    * Se conosci la posizione del char dentro il codice ASCII
    * puoi andare a specificare la sua posizione....
    * e creare un char specificando la posizione tra le parentesi
    * Questo guiochetto a te serve per andare a capo....
    * Ma puoi anche usare il carattere specifico per andare a capo....
    */
    System.out.println(invio);

    System.out.println("Hey hey... " +"\n");
    /**
    * Aggiungi alla stringa in coda il suffisso "\n".....
    * che sarebbe l'equivalente del char 13
    * Va a capo automatico e si attacca automaticamente
    * Stai attento alla direzione dello slash altrimenti se scrivi /n
    * lui procede a stampare /n.....
    */

    }

    }
    Volsi cola dove si puote ciò che si vuole e più non dimandare

  10. #10
    Originariamente inviato da interarete
    ... quando si converte da byte[] a stringa bisogna tenere conto del character set.
    In due righe si può fare così:
    codice:
    public String getText (byte[] arr)
    {
      String s = new String( arr, "UTF-8" );
      return s.replaceAll( " ", "" );
    }
    sostituendo eventualmente "UTF-8" con il proprio character set.
    Aggiungo per completezza e in ritardo di un anno rispetto alla discussione (puo' essere cmq utile visto che Google te la propone tra i primi risultati) la setText:

    codice:
    public byte[] setText (String string) {
      byte[] buff = null;
      try {
        buff = string.getBytes("UTF-8"));
      } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
      return buff;
    }
    Ciaooo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.