Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [C++] Pack per creare una stringa binaria

    Salve,

    volevo sapere se in C++ esiste una funzione simile a Pack in Perl.

    Nello specifico mi serviva per creare stringhe binarie composte da:

    Key (lunghezza fissa 4 Bytes) + Lunghezza Value (lunghezza fissa 4 Bytes) + Value

    Quindi ad esempio:

    KEY1....VALUE

    Dove KEY1 è la chiave (4 Bytes) poi .... sono quello che quì intendo come non printable chars (4 Bytes) che descrivono la lunghezza di VALUE, infine VALUE.

    Cosi che possa creare una stringa binaria tipo:

    KEY1....VALUEKEY2....VALUE etc...

    in Perl avrei fatto qualcosa come:

    codice:
    my $key       = 'KEY1';
    my $value     = "Hello World!";
    my $value_len = length $value;
    my $res       = $key . pack("N", $value_len) . $value;
    Dove la N di Pack sta per:

    "N" - an unsigned long (32-bit) in "network" (big-endian) order.
    che occupa 4 bytes.

    Naturalmente in seguito mi piacerebbe "portare" altri elementi tipo:

    "n" - an unsigned short (16-bit) in "network" (big-endian) order.
    "a" - a string with arbitrary binary data, will be null padded.
    "A" - a text (ASCII) string, will be space padded.
    "c" - a signed char (8-bit) value.
    Grazie
    Alla batteria dai retta ballA

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Puoi usare una struttura con tutti i valori da considerare e lavorare con il suo indirizzo.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    detto così è veramente difficile da capire, potresti fare un'esempio anche "stenografato" ??
    Alla batteria dai retta ballA

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dipende anche cosa ci devi fare con questi dati una volta ottenuti ...

    Se crei una struttura del tipo

    codice:
    struct esempio
    {
       int a;
       int b;
    };
    e una variabile del tipo

    codice:
    struct esempio v;
    tramite il puntatore

    &v

    accederai ai dati binari di a e b posti in sequenza ...

    Detto ciò, che ci devi fare dopo?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    beh, diciamo che prima mi vorrei focalizzare su come formare questa stringa binaria.

    ad esempio chiedo in input la chiave, chiedo in input il suo valore e poi ritorno la stringa inpachettata nella forma chiave, lunghezza valore, valore come ho mostrato sopra

    ad esempio:

    codice:
    #include <iostream>
    #include <string>
    
    int main()
    {
    	// Inserisci la chiave: la sua lunghezza prefissata deve essere di 4 chars
    	std::string key;
    	std::getline(std::cin, key);
    
    	// Inserisci il suo valore
    	std::string value;
    	std::getline(std::cin, value);
    
    	// Ritorna la stringa binaria
    	...code...
    
    	return 0;
    }
    Alla batteria dai retta ballA

  6. #6
    cmq in generale li devo salvare su file o mandare su socket
    Alla batteria dai retta ballA

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ho capito ... valore è un intero o una stringa?

    A questo punto, mi fai un esempio di input ? Per key intendi 4 caratteri come

    ABCD

    o cosa?

    E il valore della chiave?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    beh, infatti per adesso valore sarà solo una stringa, se fosse stata anche un intero o un boolean avrei dovuto avere un approccio diverso, ma per adesso mi accontento che sia sempre e soltanto una stringa:

    ABCD....VALORE_QUELLO_CHE_TI_PARE_MA_SOLTANTO_STRI NGA
    Alla batteria dai retta ballA

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ok ... allora non ho capito la tua richiesta iniziale ...

    Lascia perdere il perl e chiarisci cosa vorresti ottenere a partire da queste stringhe ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    diciamo che devo salvare su file delle coppie key, value usando una certa struttura. Per rileggerle avrò bisogno si usare quella stessa struttura.

    la struttura che ho scelto è la seguente:

    Dove la chiave è rappresentata da 4 caratteri alfanumerici, poi ho altri 4 bytes in formato u nsigned long a 32-bit, dove viene salvato un numero: questo numero è la lunghezza della VALUE che contiene solo caratteri (alfanumerici e non)

    KEY1....VALUE

    quando andrò a leggere il file farò:

    leggi i primi 4 chars (la key)
    leggi i successivi 4 bytes (lunghezza value)
    leggi i successivi (lunghezza value) bytes

    e così via...
    Alla batteria dai retta ballA

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.