Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216

    [C++] equivalente di Java println(new String(byte[] b))

    Ciao
    non riesco a stampare un array di unsigned char in C++.
    In pratica leggo dei byte da uno stream come unsigned char e li inserisco in un array b. A questo punto ho provato varie conversioni per stampare i caratteri ascii, ma ottengo solo simboli strani, ho usato sia printf con %s, %u che cout

    Ho fatto una cosa simile in Java leggendo gli stessi dati da InputStream, salvando in un byte[] b e poi stampando con:
    codice:
    System.out.println(new String(b))
    e non ho problemi. Cosa sbaglio?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma di quale codice stai parlando?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Ma di quale codice stai parlando?
    Questa è la porzione di codice a cui mi riferisco:
    codice:
            unsigned char *data = new unsigned char[64];
            int transferred;
            int r = libusb_interrupt_transfer(handle, (0x81 | LIBUSB_ENDPOINT_IN), data, 64, &transferred, 2000);
            for (int f=0; f<64; f++){
                    // Print data[f] ??? 
            }
    doc funzione libusb_interrupt_transfer
    handle è un handle al dispositivo USB da cui leggo i dati
    Ultima modifica di raff5184; 31-03-2014 a 13:08

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Quote Originariamente inviata da raff5184 Visualizza il messaggio
    Ciao
    non riesco a stampare un array di unsigned char in C++.
    In pratica leggo dei byte da uno stream come unsigned char e li inserisco in un array b. A questo punto ho provato varie conversioni per stampare i caratteri ascii, ma ottengo solo simboli strani, ho usato sia printf con %s, %u che cout

    Ho fatto una cosa simile in Java leggendo gli stessi dati da InputStream, salvando in un byte[] b e poi stampando con:
    codice:
    System.out.println(new String(b))
    e non ho problemi. Cosa sbaglio?
    codice:
    for(int i = 0; i < array_length; ++i)
      printf("%4d", array[i]);
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216
    Grazie. Con %d effettivamente elimino i caratteri strani, ma a differenza di Java, qui ottengo solo delle stringhe di numeri mentre con java avevo stringhe di numeri e parole

  6. #6
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    ?!
    Ma che cosa dovrebbe rappresentare quella stringa?
    Che formato ha?

    Io pensavo contenesse semplicemente una serie di numeri...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    ?!
    Ma che cosa dovrebbe rappresentare quella stringa?
    Che formato ha?

    Io pensavo contenesse semplicemente una serie di numeri...
    Si tratta di pacchetti di un certo protocollo. Ad esempio l'header è qualcosa del genere

    codice:
    <EOT>
    <STX>1H|\^&||nnnnn|XYZW7390^1.01\1.02\^7390-0002193|
    A=1^C=9^G=0^R=0.987^U=0^V=20600^X=1108013090^Y=110250060110^Z=1|30|||||P|1|
    20080603131017<CR><ETB>F3<CR><LF>
    <ENQ>
    dove tra <> ci sono i caratteri di controllo, che in Java vengono automaticamente skippati nel print. Ma il punto non è quello di saltarli o meno, bensì di come stampare il resto

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Scusa e perché ti serve stamparla a video?
    basta che sostituisci i caratteri di controllo con qualcosa di adeguato per fare un stampa alla meno peggio, se vuoi qualcosa di più accurato gestisciti i dati per quello che vuoi venga stampato...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Scusa e perché ti serve stamparla a video?
    basta che sostituisci i caratteri di controllo con qualcosa di adeguato per fare un stampa alla meno peggio, se vuoi qualcosa di più accurato gestisciti i dati per quello che vuoi venga stampato...
    Mi serve stamparla per controllare cosa sto ricevendo e altri motivi. E' proprio questo il problema che io ho questi pacchetti (=array di unsigned char) e quando vado a staparli in Java (sotto Windows) ottengo una cosa ed è corretta, mentre in C++ (sotto Ubuntu) non ottengo la stessa cosa

  10. #10
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Scusa, ma perché non puoi usare java anche in linux? xD
    Comunque ti ho detto, basta che sostituisci i caratteri di controllo con qualcos'altro, ad esempio uno spazio..
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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 © 2024 vBulletin Solutions, Inc. All rights reserved.