DIMITRISG Δημοσ. 22 Ιανουαρίου 2022 Δημοσ. 22 Ιανουαρίου 2022 Θέλω να καταλάβω σε ένα πρόγραμμα που διαβάζει μια δέσμη πως βρίσκει την τιμή 1931 Η τιμή βρίσκεται σε 15 bits μέσα σε 3 bytes ξεκινώντας από το bit 5. Η τιμή είναι Signed Από μια δέσμη 460 bytes διαβάζει 3 bytes σε bigendian: CB1E00 και παίρνει τα 15 bits 11 001011 00011110 00000000 μετά κρατά το 0 δεξιά και το βάζειι πρώτο αριστερά και αντιστρέφει σε little endian: Παίρνει τα 8 δεξιά και τα βάζει αριστερά και συμπληρώνει με τα υπόλοιπα 001011000111100 000011110001011 Έτσι πρέπει να γίνει η μετατροπή από big σε little; Έψαξα μεθόδους μεταχείρισης bits αλλά δεν βρίσκω τι είναι αυτή η μέθοδος Σίγουρα έχει να κάνει με τον αριθμό των bits αυτή η μέθοδος γιατί όταν είναι πχ 16 ή 24 δεν κάνει έτσι αλλά με τον κλασσικό τρόπο (δηλαδή 001ECB)
DIMITRISG Δημοσ. 22 Ιανουαρίου 2022 Μέλος Δημοσ. 22 Ιανουαρίου 2022 Οπότε από big endian CB1E00 και μήκος 15 bits από την θέση 5 για να μετατρέψουμε σε little endian: 001ECB κρατάμε από το 00 το bit 7 (που ήταν το 15o bit σε big endian) , το byte 1E που είναι τα bits 7 έως 0 και τα 6 bits 5 έως 0 του CB.
n3a Δημοσ. 23 Ιανουαρίου 2022 Δημοσ. 23 Ιανουαρίου 2022 (επεξεργασμένο) Δεν είμαι σίγουρος ότι κατάλαβα τι ακριβώς ψάχνεις. Για μετατροπή μεταξύ big <-> little endian, απλά αντιστρέφεις τη σειρά των bytes. Αν το CB 1E 00 είναι ένα hex value σε little endian, σε big endian αναπαρίσταται ως 00 1E CB. Και το αντίστροφο, αν είναι big -> little. Tο ίδιο προφανώς και όταν μιλάμε για bits. Αν αλλάξεις όμως τη σειρά των bytes (και άρα των bit σε 8δες), αν έβρισκες κάπου εκεί ανάμεσα τον δεκαδικό 1931 διαβάζοντας big-endian (και μάλιστα "δανειζόμενος" bits από διπλανά bytes), δεν ξέρω θα τον ξαναβρείς απαραίτητα διαβάζοντας σε little-endian... Επεξ/σία 23 Ιανουαρίου 2022 από n3a
DIMITRISG Δημοσ. 23 Ιανουαρίου 2022 Μέλος Δημοσ. 23 Ιανουαρίου 2022 Όντως είναι λίγο μπέρδεμα. Η τιμή είναι σε little endian. Η δέσμη ολόκληρη είναι σε big endian. Για να βρω μια τιμή αντιστρέφω τα bytes. Όταν η τιμή καταλαμβάνει ολόκληρο το byte ή ξεκινά από το 7ο bit η μετατροπή γίνεται φυσιολογικά. Όταν όμως η τιμή βρίσκεται ενδιάμεσα, δεν είμαι ακόμα σίγουρος ότι πρέπει να αντιστραφουν τα bits κατά τον τρόπο που ανέφερα ανωτέρω. Πιθανόν να είναι μια τεχνική για αυτό ρώτησα μήπως κάποιος μου το επιβεβαιώσει...
n3a Δημοσ. 23 Ιανουαρίου 2022 Δημοσ. 23 Ιανουαρίου 2022 Αν θέλεις δώσε μας λίγες περισσότερες πληροφορίες γιατί κάπου χάνομαι... Ποιο είναι αυτό το πρόγραμμα που διαβάζει συγκεκριμένα bits από δυο διαφορετικά bytes για να εξάγει έναν αριθμό και ποια η λειτουργία του (κυρίως, γιατί το κάνει); Υπάρχει κάποιο κωμάτι κώδικα;
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα