Windows su IntelAMD è little-endian anche, in modo non è necessaria alcuna conversione endian. Ora, se è possibile mostrare il record specifico e dove ottenere i dati binari dal, sarà più facile rispondere. Si può leggere qualsiasi tipo di record da un file. Se il record è dichiarato in tal modo che esso ha esattamente lo stesso layout come dati binari, è possibile leggere un intero record in una sola volta. In caso contrario, hanno youll leggere ogni campo separatamente. In generale, è possibile leggere i record o campi individuali di un record, da un flusso con se i dati proviene da un socket TCP, è possibile, per esempio, scriverlo in una TMemoryStream, come byte. Quindi è possibile ripristinare il puntatore del torrente all'inizio e leggere i dati come indicato. Come David ha commentato, se i byte vengono attraverso la connessione TCP in ordine di byte di rete, allora ha senso per eseguire ogni campo attraverso una delle funzioni WinSock ntohs () o ntohl (). dopo tutto quanto sopra, ma prima che le voci del registro vengono utilizzati. ntohs () converte 2 tipi di byte, mentre ntohl () converte 4 tipi di byte. Per inviare articoli, utilizzare le funzioni inverse htons () e htonl () su ogni elemento del record prima di inviarli (a parte). FWIW, è abbastanza facile, in Win32, cambiare endianness utilizzando: Quando si trasferiscono interi binari su una rete, è importante garantire che i sistemi di trasmissione e di ricezione utilizzano lo stesso formato o che una conversione è fatto. Se un computer Big Endian ha inviato il numero binario sopra a un computer endian Poco senza conversione, sarebbe stato interpretato come 513. Per evitare problemi in una rete eterogenea, numeri binari vengono convertiti in Rete formato standard (big endian) prima della trasmissione. Le funzioni: htons Host alla rete Breve htonl Host alla rete lungo può essere utilizzato per convertire i dati binari alla rete formato standard. Nota storica: I nomi Big Endian e Little Endian provengono da Rondoni romanzo Gullivers Travels. In questa storia i lillipuziani sono stati divisi nelle grandi endians e le Piccole endians in base a quale estremità di un uovo sodo che credevano dovrebbe essere opened. Boost C librerie a 16 bit valore binario o un argomento pigro che restituisce un valore binario a 16 bit. Questo valore è sempre in endian nativo. Un valore binario a 32 bit o un argomento pigro che restituisce un valore binario a 32 bit. Questo valore è sempre in endian nativo. Un valore binario a 64 bit o un argomento pigro che restituisce un valore binario a 64 bit. Questo valore è sempre in endian nativo. Un valore binario float o un argomento pigro che restituisce un valore binario galleggiante. Questo valore è sempre in endian nativo. Un valore binario doppio o un argomento pigro che restituisce un valore binario doppio. Questo valore è sempre in endian nativo. Semantica di una espressione è definita solo dove si differenzia da, o non è definito in PrimitiveParser.
No comments:
Post a Comment