Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

vba per codifica

36 views
Skip to first unread message

rg

unread,
Apr 10, 2011, 1:26:14 PM4/10/11
to
Ciao a tutti,
avrei necessità di trasformare tramite qualche algoritmo dei codici
prodotto di 10 caratteri fissi in 4 caratteri fissi univoci (per
ragioni di lunghezza di un capo) . Esiste qualche esempio
di criptatura per le esigenze su indicate?.

Grazie e saluti.

John

Bruno Campanini

unread,
Apr 10, 2011, 1:40:05 PM4/10/11
to

Per caratteri intendi i 36 alfanumerici?

Cosa intendi per univoci:
1 - i codici differiscono per almeno un carattere
2 - i codici differiscono per almeno un carattere e/o
per l'ordine in cui i caratteri si susseguono?

Bruno


r

unread,
Apr 10, 2011, 6:35:50 PM4/10/11
to

immagino che voglia qualcosa tipo i farmacode che usano un sistema di
codifica-decodifica trasformando un numero a 10 cifre in base 10 in un
codice a 6 caratteri [0-9B-DF-GJ-NP-Z] in base 32 ... tutto per
risparmiare spazio nelle piccole confezioni ...

però come ben dicevi occorrono maggiori specifiche
ciao
r

rg

unread,
Apr 11, 2011, 1:42:04 AM4/11/11
to
On Sun, 10 Apr 2011 15:35:50 -0700 (PDT), r <robb...@gmail.com>
wrote:

>On 10 Apr, 19:40, Bruno Campanini <brunoca...@libero.it> wrote:
>> rg on 10-04-11 wrote:
>> > Ciao a tutti,

>> > avrei necessit=E0 di trasformare tramite qualche algoritmo dei codici


>> > prodotto di 10 caratteri fissi in 4 caratteri fissi univoci (per
>> > ragioni di lunghezza di un capo) . Esiste qualche esempio
>> > di criptatura per le esigenze su indicate?.
>>
>> Per caratteri intendi i 36 alfanumerici?
>>
>> Cosa intendi per univoci:
>> 1 - i codici differiscono per almeno un carattere
>> 2 - i codici differiscono per almeno un carattere e/o

>> =A0 =A0 per l'ordine in cui i caratteri si susseguono?


>>
>> Bruno
>
>immagino che voglia qualcosa tipo i farmacode che usano un sistema di
>codifica-decodifica trasformando un numero a 10 cifre in base 10 in un
>codice a 6 caratteri [0-9B-DF-GJ-NP-Z] in base 32 ... tutto per
>risparmiare spazio nelle piccole confezioni ...
>

>per=F2 come ben dicevi occorrono maggiori specifiche
>ciao
>r


Ciao per caratteri intendo 1 26 alfabetic

esempio:

codice 10: 01ABK01005
CFODICE 4 XYZA

univoci perchè la trascodifica deve sempre dare il codice originale.

saluti e grazie

jonh

Bruno Campanini

unread,
Apr 11, 2011, 5:01:35 AM4/11/11
to

Non riesco a capire il trucco (algoritmo) che porta a convertire senza
ambiguità una codifica numerica di 10 caratteri (cifre) in base 10 (10
miliardi di diposizioni) in una codifica di 6 caratteri in base 32
(poco più di un miliardo di disposizioni).

Secondo i dati dell'OP poi una codifica di 10 elementi tratti dai 26
caratteri alfanumerici (oltre 141 000 miliardi di disposizioni)
dovrebbe tradursi in una di 4 su 26 (nemmeno mezzo milione di
disposizioni).

Evidentemente la codifica originale non sfrutta tutte le possibilità,
occorre pertanto conoscerne la chiave.

Bruno


r

unread,
Apr 11, 2011, 5:27:19 AM4/11/11
to

oppure utilizzare più caratteri ... come vuole l'op non è fattibile
senza quello che chiedi tu.
saluti
r

r

unread,
Apr 11, 2011, 5:47:46 AM4/11/11
to
On 11 Apr, 11:01, Bruno Campanini <brunoca...@libero.it> wrote:
> r on 11-04-11 wrote:
> > On 10 Apr, 19:40, Bruno Campanini <brunoca...@libero.it> wrote:
> >> rg on 10-04-11 wrote:
> >>> Ciao a tutti,
> >>> avrei necessità di trasformare tramite qualche algoritmo dei codici
> >>> prodotto di 10 caratteri fissi in 4 caratteri fissi univoci (per
> >>> ragioni di lunghezza di un capo) . Esiste qualche esempio
> >>> di criptatura per le esigenze su indicate?.
>
> >> Per caratteri intendi i 36 alfanumerici?
>
> >> Cosa intendi per univoci:
> >> 1 - i codici differiscono per almeno un carattere
> >> 2 - i codici differiscono per almeno un carattere e/o
> >>     per l'ordine in cui i caratteri si susseguono?
>
> >> Bruno
>
> > immagino che voglia qualcosa tipo i farmacode che usano un sistema di
> > codifica-decodifica trasformando un numero a 10 cifre in base 10 in un
> > codice a 6 caratteri [0-9B-DF-GJ-NP-Z] in base 32 ... tutto per
> > risparmiare spazio nelle piccole confezioni ...
>
> Non riesco a capire il trucco (algoritmo) che porta a convertire senza
> ambiguità una codifica numerica di 10 caratteri (cifre) in base 10 (10
> miliardi di diposizioni) in una codifica di 6 caratteri in base 32
> (poco più di un miliardo di disposizioni).


nel caso del farmacode ...
il primo carattere deve essere una A e quindi è solo un carattere di
controllo ...
quindi dovrebbe tornare ...
saluti
r

rg

unread,
Apr 11, 2011, 2:05:53 AM4/11/11
to
On Mon, 11 Apr 2011 02:47:46 -0700 (PDT), r <robb...@gmail.com>
wrote:

>On 11 Apr, 11:01, Bruno Campanini <brunoca...@libero.it> wrote:


>> r on 11-04-11 wrote:
>> > On 10 Apr, 19:40, Bruno Campanini <brunoca...@libero.it> wrote:
>> >> rg on 10-04-11 wrote:
>> >>> Ciao a tutti,

>> >>> avrei necessit=E0 di trasformare tramite qualche algoritmo dei codici


>> >>> prodotto di 10 caratteri fissi in 4 caratteri fissi univoci (per
>> >>> ragioni di lunghezza di un capo) . Esiste qualche esempio
>> >>> di criptatura per le esigenze su indicate?.
>>
>> >> Per caratteri intendi i 36 alfanumerici?
>>
>> >> Cosa intendi per univoci:
>> >> 1 - i codici differiscono per almeno un carattere
>> >> 2 - i codici differiscono per almeno un carattere e/o

>> >> =A0 =A0 per l'ordine in cui i caratteri si susseguono?


>>
>> >> Bruno
>>
>> > immagino che voglia qualcosa tipo i farmacode che usano un sistema di
>> > codifica-decodifica trasformando un numero a 10 cifre in base 10 in un
>> > codice a 6 caratteri [0-9B-DF-GJ-NP-Z] in base 32 ... tutto per
>> > risparmiare spazio nelle piccole confezioni ...
>>
>> Non riesco a capire il trucco (algoritmo) che porta a convertire senza

>> ambiguit=E0 una codifica numerica di 10 caratteri (cifre) in base 10 (10


>> miliardi di diposizioni) in una codifica di 6 caratteri in base 32

>> (poco pi=F9 di un miliardo di disposizioni).


>
>
>nel caso del farmacode ...

>il primo carattere deve essere una A e quindi =E8 solo un carattere di


>controllo ...
>quindi dovrebbe tornare ...
>saluti
>r
>

Salve,
chiedevo solamente se è fattibile e come (alcgoritmo hash)
trasformare un codice alfanumero di 10 caratteri in un codice breve di
4 caratteri alfabetici che lo rappresenti in maniera univoca ,
esempio:

codice descrizione codice breve
01ABCDE000 PRODOTTO A XYZL
02RAL01001 PRODOTTO B SWGH

Saluti.

John

r

unread,
Apr 11, 2011, 5:41:35 PM4/11/11
to
On 11 Apr, 08:05, nomail@. (rg) wrote:
> On Mon, 11 Apr 2011 02:47:46 -0700 (PDT), r <robb....@gmail.com>
>  chiedevo solamente se fattibile e come (alcgoritmo hash)

> trasformare un codice alfanumero di 10 caratteri in un codice breve di
> 4 caratteri alfabetici che lo rappresenti in maniera univoca ,
> esempio:
>
> codice                descrizione              codice breve
> 01ABCDE000    PRODOTTO A        XYZL
> 02RAL01001     PRODOTTO B        SWGH
>
> Saluti.
>
> John          

ci provo l'ultima volta ... personalmente ho già perso la pazienza
prendi un codice binario dove i caratteri usati sono due lo zero e
l'uno ...
per rappresentare l'8 devi usare 4 caratteri 1000 ... in un sistema
decimale ne basta 1 l'otto appunto ... perchè? ... perchè un sistema a
base 10 dispone di 10 diversi caratteri che possono essere usati per
restituire l'informazione. Un sistema esadecimale ad esempio utilizza
16 diversi caratteri (oltre ai numeri le lettere da A a F ... quindi
se volessimo rappresentare l'informazione 15 si avrebbe:
1111 (binario)
15 (decimale)
F (esadecimale)

se hai un codice alfanumerico (36 caratteri [0-9A-Z]) lungo 10
elementi puoi potenzialmente esprimere 3.656.158.440.062.980
informazioni (bruno dico bene?)
Ti occorrerebbe un set di caratteri di 7.776 diversi elementi per
restituire le stesse informazioni con serie di soli 4 elementi ... tu
conosci il cinese?

saluti
r

r

unread,
Apr 11, 2011, 6:25:31 PM4/11/11
to

ecco ...


Function conv_to_china_code(da_base As Integer, _
a_base As Integer, sCodice As String) As String
'Function di Erik Oosterwal modificata
Dim J, K, D, X, P, Y As Integer
Dim S, O As String
Dim I As Long

S = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Y = Len(sCodice)

For J = 1 To Y
For K = 1 To da_base
If Mid(sCodice, J, 1) = Mid(S, K, 1) Then
P = 1
For I = 1 To Y - J
P = P * da_base
Next
D = D + (K - 1) * P
Exit For
End If
Next K
Next J

While D > 0
X = ((D / a_base) - Int( _
D / a_base)) * a_base + 1
O = ChrW(X + 20000) & O
D = Int(D / a_base)
Wend
conv_to_china_code = O
End Function


poi se hai il codice in A1 in B1 scrivi:
=conv_to_china_code(36;7776;A1)
e otterrai il tuo codice univoco di 4 caratteri cinesi :-)
saluti
r

rg

unread,
Apr 12, 2011, 1:28:00 AM4/12/11
to
On Mon, 11 Apr 2011 14:41:35 -0700 (PDT), r <robb...@gmail.com>
wrote:

>On 11 Apr, 08:05, nomail@. (rg) wrote:


>> On Mon, 11 Apr 2011 02:47:46 -0700 (PDT), r <robb....@gmail.com>
>> wrote:
>>
>>
>>
>> >On 11 Apr, 11:01, Bruno Campanini <brunoca...@libero.it> wrote:
>> >> r on 11-04-11 wrote:
>> >> > On 10 Apr, 19:40, Bruno Campanini <brunoca...@libero.it> wrote:
>> >> >> rg on 10-04-11 wrote:
>> >> >>> Ciao a tutti,

>> >> >>> avrei necessit=3DE0 di trasformare tramite qualche algoritmo dei c=


>odici
>> >> >>> prodotto di 10 caratteri fissi in 4 caratteri fissi univoci (per
>> >> >>> ragioni di lunghezza di un capo) . Esiste qualche esempio
>> >> >>> di criptatura per le esigenze su indicate?.
>>
>> >> >> Per caratteri intendi i 36 alfanumerici?
>>
>> >> >> Cosa intendi per univoci:
>> >> >> 1 - i codici differiscono per almeno un carattere
>> >> >> 2 - i codici differiscono per almeno un carattere e/o

>> >> >> =3DA0 =3DA0 per l'ordine in cui i caratteri si susseguono?
>>
>> >> >> Bruno
>>
>> >> > immagino che voglia qualcosa tipo i farmacode che usano un sistema d=
>i
>> >> > codifica-decodifica trasformando un numero a 10 cifre in base 10 in =


>un
>> >> > codice a 6 caratteri [0-9B-DF-GJ-NP-Z] in base 32 ... tutto per
>> >> > risparmiare spazio nelle piccole confezioni ...
>>
>> >> Non riesco a capire il trucco (algoritmo) che porta a convertire senza

>> >> ambiguit=3DE0 una codifica numerica di 10 caratteri (cifre) in base 10=


> (10
>> >> miliardi di diposizioni) in una codifica di 6 caratteri in base 32

>> >> (poco pi=3DF9 di un miliardo di disposizioni).


>>
>> >nel caso del farmacode ...

>> >il primo carattere deve essere una A e quindi =3DE8 solo un carattere di


>> >controllo ...
>> >quindi dovrebbe tornare ...
>> >saluti
>> >r
>>
>> Salve,

>> =A0chiedevo solamente se fattibile e come (alcgoritmo hash)


>> trasformare un codice alfanumero di 10 caratteri in un codice breve di
>> 4 caratteri alfabetici che lo rappresenti in maniera univoca ,
>> esempio:
>>

>> codice =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0descrizione =A0 =A0 =A0 =A0 =A0 =A0=
> =A0codice breve
>> 01ABCDE000 =A0 =A0PRODOTTO A =A0 =A0 =A0 =A0XYZL
>> 02RAL01001 =A0 =A0 PRODOTTO B =A0 =A0 =A0 =A0SWGH
>>
>> Saluti.
>>
>> John =A0 =A0 =A0 =A0 =A0
>
>ci provo l'ultima volta ... personalmente ho gi=E0 perso la pazienza


>prendi un codice binario dove i caratteri usati sono due lo zero e
>l'uno ...
>per rappresentare l'8 devi usare 4 caratteri 1000 ... in un sistema

>decimale ne basta 1 l'otto appunto ... perch=E8? ... perch=E8 un sistema a


>base 10 dispone di 10 diversi caratteri che possono essere usati per
>restituire l'informazione. Un sistema esadecimale ad esempio utilizza
>16 diversi caratteri (oltre ai numeri le lettere da A a F ... quindi
>se volessimo rappresentare l'informazione 15 si avrebbe:
>1111 (binario)
>15 (decimale)
>F (esadecimale)
>
>se hai un codice alfanumerico (36 caratteri [0-9A-Z]) lungo 10
>elementi puoi potenzialmente esprimere 3.656.158.440.062.980
>informazioni (bruno dico bene?)
>Ti occorrerebbe un set di caratteri di 7.776 diversi elementi per
>restituire le stesse informazioni con serie di soli 4 elementi ... tu
>conosci il cinese?
>
>saluti
>r
>
>
>

Ciao Sapiente,
il cinese non lo conoscom ma tu non conosci neanche
il modo di spiegare le cose, fatti un corso di simpatia e se perdi la
pazienza non rispondere alle richieste.

Mauro Gamberini

unread,
Apr 12, 2011, 3:39:47 AM4/12/11
to

Ciao Sapiente,
il cinese non lo conoscom ma tu non conosci neanche
il modo di spiegare le cose, fatti un corso di simpatia e se perdi la
pazienza non rispondere alle richieste.

*********************************

Hai perso una buona occasione
per tenere le mani lontane dalla
tastiera.

Roberto *è* il newsgroup di Excel
in questo momento, offenderlo gratuitamente
non è una cosa che ti faccia onore.

Forse Roberto e Bruno stanno solo cercando
di spiegarti che la cosa non è così semplice.

Prova a postare la tua richiesta in un newsgroup
di matematica, ad esempio:

it.scienza.matematica

Una volta ottenuta la risposta e la logica
che può eventualmente risolvere il tuo
problema, possiamo provare(se possibile)
di trasformarlo in un algoritmo vb.

Grazie per l'attenzione.
--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/

r

unread,
Apr 12, 2011, 5:18:07 AM4/12/11
to
On 12 Apr, 07:28, nomail@. (rg) wrote:

> Ciao Sapiente,

Sapiente? mi piace, grazie :-)

> il cinese non lo conosco

peccato! purtroppo nemmeno io, anche se mi piacerebbe

> m ma tu non conosci neanche
> il modo di spiegare le cose,

non hai ancora capito?
a mamma mia!

hai posto una domanda in modo approssimativo ...

alle richieste di precisione hai risposto in modo impreciso (26
caratteri alfabetici, invece poi erano 36 alfanumerici) quasi il
problema fosse nostro anzichè tuo

hai poi insistito riproponendo cocciutamente la domanda senza nemmeno
cercare di capire il senso delle risposte, come un asino che
raglia ...

almeno con la tua ultima, non hai chiesto nuovamente un algoritmo per
trasformare il dna di un cavallo in quello di una ameba ... in modo
univoco ...
questo però è già un passo avanti ... voglia di galoppare poca ... ma
almeno non sei piatto come una ameba

> fatti un corso di simpatia

ne ho già fatti 3 ... ma in tutti mi hanno detto che sono un asino e
non imparerò mai ... quindi rinuncio

>e se perdi la pazienza non rispondere alle richieste.

fallo anche tu ... prima di rispondere a questa mia ultima ...
ma almeno l'hai provata la funzione? ... no perchè risponde
perfettamente alle tue esigenze!
saluti
r

r

unread,
Apr 12, 2011, 5:22:04 AM4/12/11
to
On 12 Apr, 09:39, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:

> Forse Roberto e Bruno stanno solo cercando

> di spiegarti che la cosa non cos semplice.

certo che è semplice!

>
> Prova a postare la tua richiesta in un newsgroup
> di matematica, ad esempio:
>
> it.scienza.matematica

si, prova ... magari bruno gli risponde :-)

>
> Una volta ottenuta la risposta e la logica

> che pu eventualmente risolvere il tuo


> problema, possiamo provare(se possibile)
> di trasformarlo in un algoritmo vb.

la soluzione l'ha già avuta ... se non esiste una chiave diversa da
quella sequenziale (Bruno glie l'ha già chiesto) quella è l'unica
soluzione possibile.


>
> Grazie per l'attenzione.

ma grazie a te :-)
ciao
r

Mauro Gamberini

unread,
Apr 12, 2011, 5:26:58 AM4/12/11
to
no perchè risponde
perfettamente alle tue esigenze!
**************************

Ma ROTFL!!!

r

unread,
Apr 12, 2011, 5:31:25 AM4/12/11
to
On 12 Apr, 11:26, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> no perch risponde

anche tu non sai il cinese eh? :-)

Mauro Gamberini

unread,
Apr 12, 2011, 6:40:38 AM4/12/11
to

anche tu non sai il cinese eh? :-)

***************************

No. Ma mi sto studiando il bolognese.
Maledizione, oramai lo parlano in pochi.

---------------------------
Mauro Gamberini

paoloard

unread,
Apr 12, 2011, 9:58:16 AM4/12/11
to
"r" ha scritto nel messaggio
news:3d9e6f8e-9e9d-41e4...@z31g2000vbs.googlegroups.com...

------------------------------------------------------

Io volele impalale cinese ma inciampale semple su ideoglammi, cosě
linunciato; tloppe cadute, mio naso semple lotto.
Plefelile dialetto bolognese: soccmel!

ciao paoloald
http://www.liolab.olg

eliano

unread,
Apr 12, 2011, 6:15:48 PM4/12/11
to

LOL, risposta notevole che suscita la mia piena dichiarazione di
simpatia, della quale non avevi bisogno.:-))
E per fare contento l'OP...mi unisco al raglio.:-D)
Fumate orientali, un po' acidule.:-(
Eliano

0 new messages