Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 13 su 13
  1. #11
    Originariamente inviato da Smoke666
    Non ho tuttavia capito il suggerimento che mi ha dato MItaly...Come posso sapere se mi sono stati inviati dati in little o big endian? E' una cosa dipendente dall'architettura della macchina o sbaglio?
    È il motivo per cui normalmente si adotta una convenzione sull'ordine dei byte dei dati relativi al protocollo; i protocolli internet "classici" lavorano sempre in big-endian (e vengono normalmente fornite le funzioni ntoh*/hton* per gestire la conversione). Ma, prima ancora di preoccuparsi dell'endianness (tutti i PC "normali" ormai lavorano in little endian, per cui se non intendi portare il tuo codice a macchine big-endian puoi momentaneamente disinteressarti del problema), è più importante non scrivere dei generici int/long/..., ma usare dei tipi a dimensione fissata (int32_t, int64_t, ...), dato che a seconda della piattaforma le dimensioni degli interi possono cambiare.
    Amaro C++, il gusto pieno dell'undefined behavior.

  2. #12
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    214
    Mettendo da parte il problema dell'endianness mi trovo a dover impacchettare un intero. Visto il suggerimento che mi hai dato (e ti ringrazio per questo! ) ho deciso di usare un int64_t. Ora sorge un dubbio che neanche google è riuscito a chiarirmi: per usare questo tipo di dato, ho bisogno di utilizzare una qualche conversione da int a int64_t? Mi spiego meglio, devo inviare la lunghezza di una stringa. La chiamata a strlen mi restituisce un int, come faccio a trasformarlo in int64_t?

  3. #13
    strlen non ti restituisce un int, ma un size_t. In ogni caso, basta un normale cast.
    Amaro C++, il gusto pieno dell'undefined behavior.

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