Unsigned char invalid byte sequence in conversion input

di Marchetto il
7 risposte

Stò facendo un casting in unsigned char così

rgb_t colour;
image.get_pixel(c, r, colour);
cout << (unsigned char)colour.red << " " << (unsigned char)colour.green << " " << (unsigned char)colour.blue << endl;

ma ho provato anche reinterpret e static cast

e lo compilo con

reset && c++ desc.cpp -O3 -march=native -o desc && ./desc > out.log

quando apro quel file con mousepad ottengo invalid byte sequence in conversion input

desc si esegue bene e non dà errori.

se lo apro con emacs ottengo

\200 \200 \200

che non è assolutamente quello che deve essere.

7 Risposte

  • Ma scusa Marchetto, nel codice

    rgb_t colour;
    image.get_pixel(c, r, colour);

    r e c quanto valgono?

    “Non è quello che deve essere” che vuol dire?

  • Valgono le coordinate del pixel nell' immagine che può essere 0 0 o 67 89 tutti insomma.

    vuol dire che quel cout dovrebbe restituire la tripletta rgb 128 128 128 nel caso del grigio e 0 0 0 nel caso del nero che sono nell' immagine.

    non penso che il prob sia nella funzione a monte ma nel casting a valle perchè prima di oggi facevo il casting a int e funzionava perfettamente adesso l' cambiato a unsigned char e non funziona cioè ho combiato solo quello quindi il prob deve essere il casting.

  • Marchetto non hai capito quello che ti dicevo. 

    Comunque il cast, se vuoi vedere i valori numerici, va fatto a int o a unsigned int

    Il tipo unsigned char è usato per il tipo di dato

    Ma quando hai intenzione di aprire un libro sul C?  

    P.S. lo so come funziona l' RGB

  • Adesso funziona grazie

  • Prego ma non fare richiesta senza avere letto i primi capitoli di un libro

  • Sapresti consigliarmene uno non troppo impegnativo?

  • Il Deitel&Deitel ad esempio

    Uno qualunque

Devi accedere o registrarti per scrivere nel forum
7 risposte