Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-09-2007, 17:39   #1
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
[JAVA] Computazione di 4 bit di crc

Ciao a tutti!
Devo computare 4 bit di crc su un'insieme di bit di numero variabile.
Però non so se esiste un modo tramite api java oppure se devo farmelo a mano...

Grazie in anticipo
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 17:53   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da xirc85 Guarda i messaggi
Devo computare 4 bit di crc su un'insieme di bit di numero variabile.
Però non so se esiste un modo tramite api java oppure se devo farmelo a mano...
No, non c'è nulla di già fatto, almeno per quanto riguarda il framework standard (che io sappia, ovviamente). Tra l'altro un CRC di 4 bit è alquanto inconsueto.

Piuttosto, indica:
* Il polinomio da usare
* Il valore di inizializzazione
* Se le "parole" in input vanno riflesse
* Se il CRC finale va riflesso
* Se il CRC finale va XORato con un certo valore

Questi sono i parametri che vengono usati tipicamente per descrivere un algoritmo CRC.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)

Ultima modifica di andbin : 13-09-2007 alle 17:57.
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 17:58   #3
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
In effetti non saprei risponderti con esattezza, poichè mi è stata data piena libertà a riguardo , ma non avendo molta esperienza non so da dove iniziare...
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2007, 18:16   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da xirc85 Guarda i messaggi
In effetti non saprei risponderti con esattezza, poichè mi è stata data piena libertà a riguardo , ma non avendo molta esperienza non so da dove iniziare...
Uhm ... allora è un problema in più.

Innanzitutto inizia a vedere qui: http://en.wikipedia.org/wiki/Cyclic_redundancy_check

Un CRC a 4 bit in effetti c'è.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2007, 09:26   #5
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
Ho letto quanto mi hai suggerito...
In linea di principio credo ci aver capito più o meno come devo fare...
Correggimi se sbaglio, dato il polinomio devo fare un xor iterativamente sui bit fino a che non arrivo ad avere un uno a destra in posizione numero_bit-numero_bit_polinomio e a questo punto applicando ancora xor, ottengo i miei bit di crc. Giusto?
Ho però un dubbio per quanto riguarda il polinomio da usare. Mi spiego meglio: nell'esempio fornito (da Wiki) si faceva riferimento a un crc a 3-bit e non ho capito come ha ottenuto il divisore a 4 bit.

Grazie mille
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2007, 10:02   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Ti faccio un esempio: tra i vari CRC elencati nella pagina di Wikipedia che ho indicato, c'è un CRC-8 ATM. È abbastanza semplice perché il valore iniziale è 0, non c'è riflessione per input/output e non c'è XOR sull'output.

Tradotto in codice:
Codice:
public class TestCrc8
{
    // Polinomio CRC-8 ATM: x^8 + x^2 + x + 1
    public static final byte CRC8ATM_POLY = 0x07;

    public static void main (String[] args)
    {
        // sequenza di test '123456789'
        byte[] data = { 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39 };

        byte crc = crc8Atm (data);

        System.out.format ("CRC 8-ATM = %02X%n", crc);
    }

    public static byte crc8Atm (byte[] v)
    {
        byte crc = 0;

        for (byte b : v)
        {
            crc = (byte) (crc ^ b);

            for (int i = 0; i < 8; i++)
                crc = (byte) (crc << 1 ^ ((crc & 0x80) != 0 ? CRC8ATM_POLY : 0));
        }
        
        return crc;
    }
}
Il CRC-8 ATM della sequenza '123456789' è F4h
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2007, 10:40   #7
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
Grazie per il codice che mi hai fornito
Un'ultima cosa: come faccio a calcolarmi il polinomio? credo che sia una cosa del tipo x^4+x+1, ma non so cosa ne risulta...

Grazie ancora
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2007, 10:57   #8
xirc85
Member
 
L'Avatar di xirc85
 
Iscritto dal: Sep 2007
Città: Trento
Messaggi: 91
Credo di aver trovato la soluzione.. bastava pensare in maniera ovvia

Grazie ancora
xirc85 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2007, 11:10   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da xirc85 Guarda i messaggi
Grazie per il codice che mi hai fornito
Prego, ma è solo un esempio, che comunque devi adattare al CRC che poi scegli.

Quote:
Originariamente inviato da xirc85 Guarda i messaggi
Un'ultima cosa: come faccio a calcolarmi il polinomio? credo che sia una cosa del tipo x^4+x+1, ma non so cosa ne risulta...
Una cosa è se devi studiare tu un polinomio (deve avere delle proprietà ben precise), un'altra se devi "tradurlo" in un valore da usare nel codice.
La traduzione è semplice: Il bit più alto lo togli, per il resto, x lo fai diventare 2. Per il CRC-8 ATM che è:

x^8 + x^2 + x + 1

2^2 + 2 + 1 = 7

Il monomio più a sinistra (quello che dà il grado del polinomio) si toglie per un motivo. Nota che nel codice c'è uno shift a sinistra del CRC. Quando un bit a 1 "sbuca" fuori a sinistra (è poi il test che si fa con (crc & 0x80) ), si fa lo XOR con il polinomio. Quindi il bit 1 che sbuca andrebbe concettualmente in XOR con il bit più alto del polinomio (= 0). Per questo non lo si usa.


EDIT: aggiungo ancora una cosa. La implementazione che ho fatto è a "bit", ovviamente poco performante. Per velocizzare la computazione si usa in genere una implementazione "table based", in cui si precalcolano i CRC delle N parole, poi si combinano in modo "particolare" (adesso su due piedi non ricordo di preciso come).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)

Ultima modifica di andbin : 14-09-2007 alle 11:31.
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Zscaler Threat Report 2026: l'adozione d...
Claude AI minaccia omicidi e ricatti qua...
Dentro la gara: a Milano Cortina 2026 i ...
Samsung Display presenta QD-OLED Penta T...
KONAMI torna con "Silent Hill: Town...
Rende il citofono smart a 44,99€: Ring I...
ThunderX3 XTC, la sedia da ufficio che s...
Mercy, Mission Impossible, Aronofsky: il...
Project Windless: il nuovo action in esc...
Saros: mostrato il gameplay del gioco de...
God of War: Sons of Sparta annunciato e ...
John Wick torna in un nuovo videogioco a...
MADE chiude il 2025 con 59 partner e 250...
007 First Light: allo State of Play un n...
Gli iPhone su Amazon costano meno che su...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v