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

    array di byte e stringhe

    Salve a tutti, ho un array di byte e lo voglio convertire in una stringa
    Stampando byte per byte ottengo i seguenti valori:

    11
    -79
    42
    -81
    28
    106
    -70
    33
    10
    75
    -74
    -50
    -70
    47
    22
    -122
    97
    14
    10
    -90
    -53
    75
    -74
    -50
    -70
    45
    115
    -69
    -35
    75
    -123
    -120
    11
    -36
    -107
    115
    -33
    -20
    8
    72
    -107
    99
    -25
    -48
    56
    -99
    -116
    115

    Se faccio String s = new String(ByteArray) e poi stampo a video ottengo:

    �*�j�!
    K�κ/�a
    ��K�κ-s��K�� ܕs��H�c��8��s

    n.b.: al posto dei ? ci sono dei quadratini

    Da cosa dipende questa cosa?
    Non ci sono Queen senza Freddie !

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: array di byte e stringhe

    Originariamente inviato da music_ale
    Salve a tutti, ho un array di byte e lo voglio convertire in una stringa
    n.b.: al posto dei ? ci sono dei quadratini

    Da cosa dipende questa cosa?
    Innanzitutto bisogna vedere se quel array di byte rappresenta davvero dei "caratteri" (mica è detto ....) e in tal caso in quale charset (set di caratteri ... ISO-8859-1? UTF-8? UTF-16? altro?).

    Senza sapere queste cose .... è abbastanza inutile fare tentativi. Anche perché la sequenza postata non mi dice granché.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    l'array di byte è il risultato della funzione decode() della classe base64
    Non ci sono Queen senza Freddie !

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da music_ale
    l'array di byte è il risultato della funzione decode() della classe base64
    A parte il fatto che non esiste alcuna classe base64 nella libreria standard (anche perchè nella libreria standard le classi seguono la nomenclatura standard, quindi sarebbe con la B maiuscola), ammesso che tu abbia trovato una classe che effettua il decode di una stringa codificata Base64 (non è difficile ricavarne una), cosa vorresti fare con il risultato, dato che qualunque porzione di byte può essere codificata con tale tipo di codifica, quindi anche i byte grezzi di un file di dati?

    Cioè, il fatto che quello sia il risultato della decodifica da Base64 non ci dice nulla di ciò che dovrebbe essere il risultato, quindi non si capisce quale sia il problema di fondo.


    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

  5. #5
    per me l'array di byte può anche essere il risultato di un messaggio inviato dagli alieni
    Il problema di fondo è il fatto che quando lo converto in stringa mi stampa dei quadratini
    Non ci sono Queen senza Freddie !

  6. #6
    Siccome questa stringa poi la dovrei splittare in base al carattere '\t' mi serve poter stampare il contenuto effettivo della stringa
    Non ci sono Queen senza Freddie !

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    E cosa mai dovrebbe stampare? Lo sai che il range dei caratteri stampabili è solo di 64 caratteri, mentre un byte può assumere 256 valori distinti, sì? E mica tutti sono stampabili... Il primo byte della tua sequenza è quello con codice ASCII 11... che corrisponde al carattere ♂.

    Invece di stamparlo sulla console (che ha un suo charset), prova a salvarla in un file creandolo con il charset corretto (ad esempio, "UTF-8", boh...).


    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

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da music_ale
    per me l'array di byte può anche essere il risultato di un messaggio inviato dagli alieni
    Il problema di fondo è il fatto che quando lo converto in stringa mi stampa dei quadratini
    Ripeto che se non specifichi che cosa rappresentano davvero quei byte e se codificano "caratteri", in quale charset ..... né io e penso nemmeno altri possiamo aiutarti.

    I 4 byte iniziali

    11
    -79
    42
    -81

    che in hex sono 0x0B 0xB1 0x2A 0xAF a me NON dicono nulla nel senso di interpretarli come caratteri. Né in ASCII né in ISO-8859-1 né in UTF-8 e nemmeno in UTF-16 (BE o LE che sia anche se comunque dovrei andare a vedere quali caratteri sarebbero).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.