Creazione di blocchi di dati da grandi dati di input

-1

Sto lavorando su un algoritmo le cui specifiche dicono che accetta input a 32 bit (tipo lungo).

I miei dati effettivi sono 14 byte, ad esempio 11: 12: 12: 04: DD

Ho creato sotto-array come

subarray1[4]={'1','1',':',1} // 32 bits

Posso passare questo subarray al mio algoritmo?

In realtà quando stampo il sottoarray come stringa, allora dà un valore immondizia. Ma dopo aver aumentato le dimensioni a 5, stampa bene. Ma ora è aumentato a 5 byte (più di quanto richiesto dall'algoritmo).

Come creare 32 bit dai miei dati sopra in modo che possa essere passato all'algoritmo?

    
posta DeoChandra 08.10.2016 - 14:23
fonte

1 risposta

0

Head-up rapido: questo sito tratta in realtà di Ingegneria del software . Non otterrai il tuo codice scritto per te qui. Se hai problemi con il codice che hai scritto, fai riferimento a CodeReview SE o Stack Overflow. Consulta le linee guida su come formattare una domanda di successo.

Il problema più esterno qui è che tu non sai come i dati di input si riferiscono all'output desiderato . Questo è un requisito / problema di progettazione e non può, né dovrebbe essere risolto da te.

Devi tornare a chi ti ha assegnato questo incarico e richiedere una spiegazione, ad es.

How do I go from 00:11:22:33 to the 32-bit value? And what is the value in this case? May I have a couple of examples?

La probabile spiegazione, che non suggerisco correttamente dal momento che mio è solo una possibilità , è che il formato è simile alla rappresentazione dell'indirizzo MAC: xx:xx:xx:xx sono quattro byte rappresentati in esadecimale.

Quindi il problema interno qui è che è necessario dividere la stringa nelle sue parti costitutive

01:ab:38:af:17   => 01, ab, 38, af, 17

che dipende dalla lingua con cui stai lavorando; quindi devi convertire ciascun componente nella sua rappresentazione in formato intero a 8 bit, dove ff è 0xff o 255, cioè 11111111 in binario, e sai per certo come sono assemblati: ad esempio, dovrebbe 0f:00:f0 diventa 000011110000000011110000 , ovvero 111100000000000000001111 ? Il primo byte è il meno significativo o quello più significativo? Questo deve essere affrontato nelle specifiche di progettazione che dovrebbero essere state fornite. Non puoi decidere da solo (e se lo fai, hai una probabilità del 50% di sbagliare e una possibilità del 100% di essere ritenuto responsabile se lo sei. In alcune aziende sarai ritenuto responsabile anche se hai ragione , per aver coperto la mancanza di professionalità di qualcun altro).

Il fatto che non ti sia stato detto è un terzo problema che vale la pena di affrontare, in quanto potrebbe indicare un cattivo juju procedurale nel tuo processo di sviluppo. D'altra parte, in alcune aziende e con alcuni colleghi, potrebbe essere visto come lanciare qualcuno sul bus . La tua chiamata. Puoi portare la questione a Workplace SE .

Quindi abbiamo un quarto problema che potrebbe essere irreale, e derivano dalla mia interpretazione, che 11: 12: 12: 04: DD sono in realtà i byte 0x11, 0x12, 0x12, 0x04 e 0xDD nell'ordine LSB o MSB . E questo è che cinque byte non si adatta mai a 32 bit , poiché 5 * 8 è a 40 bit.

O le specifiche sono "cresciute" in numeri interi a 64 bit, o c'è qualcosa di gravemente incasinato nella terra dei designer.

    
risposta data 08.10.2016 - 14:36
fonte

Leggi altre domande sui tag