Mehr Mathe als VBA gefragt!!
Nico
Momentan steh ich auf dem Schlauch!
Ich habe eine Route gefunden, welche ich umwandeln möchte, doch lässt mich mein Hirn im Stich.
Diese Routine wandelt 5 Zahlen welche zwischen 1-255 liegen dürfen in 8 Zahlen um welche zwischen 1-32 liegen. Bei Bedarf kann man diese 8 Zahlen wieder in die 5 Original-Zahlen zurückwandeln.
Ich such nun nach einer Möglichkeit diese Routine so anzupassen, das die 8 neu erzeugten Zahlen nur Werte zwischen 1-10 haben dürfen.
Hier das Script:
Sub rechne()
Dim bytB1 As Byte, bytB2 As Byte, bytB3 As Byte, bytB4 As Byte, bytB5 As Byte
Dim bytZ1 As Byte, bytZ2 As Byte, bytZ3 As Byte, bytZ4 As Byte
Dim bytZ5 As Byte, bytZ6 As Byte, bytZ7 As Byte, bytZ8 As Byte
Dim z1 As Byte, z2 As Byte, z3 As Byte, z4 As Byte, z5 As Byte, z6 As Byte, z7 As Byte, z8 As _
_
Byte
Dim erg1 As Byte, erg2 As Byte, erg3 As Byte, erg4 As Byte, erg5 As Byte
bytB1 = 62
bytB2 = 48
bytB3 = 15
bytB4 = 32
bytB5 = 12
Debug.Print "Startwerte 32bit"
Debug.Print "**********"
Debug.Print bytB1
Debug.Print bytB2
Debug.Print bytB3
Debug.Print bytB4
Debug.Print bytB5
Debug.Print ""
'Pseudowerte 32bit (maximaler Wert bytZx=32)
bytZ1 = ((bytB1 And 248) \ 8) + 1
bytZ2 = (((bytB2 And 192) \ 64) Or ((bytB1 And 7) * 4)) + 1
bytZ3 = ((bytB2 And 62) \ 2) + 1
bytZ4 = (((bytB3 And 240) \ 16) Or ((bytB2 And 1) * 16)) + 1
bytZ5 = (((bytB4 And 128) \ 128) Or ((bytB3 And 15) * 2)) + 1
bytZ6 = ((bytB4 And 124) \ 4) + 1
bytZ7 = (((bytB5 And 224) \ 32) Or ((bytB4 And 3) * 8)) + 1
bytZ8 = (bytB5 And 31) + 1
Debug.Print "Pseudowerte 32bit"
Debug.Print "**********"
Debug.Print bytZ1
Debug.Print bytZ2
Debug.Print bytZ3
Debug.Print bytZ4
Debug.Print bytZ5
Debug.Print bytZ6
Debug.Print bytZ7
Debug.Print bytZ8
Debug.Print ""
'Entschlüsselung 32bit
erg1 = (bytZ1 - 1) * 8 + (bytZ2 - 1) \ 4
erg2 = ((bytZ2 - 1) Mod 4) * 64 + (bytZ3 - 1) * 2 + (bytZ4 - 1) \ 16
erg3 = ((bytZ4 - 1) Mod 16) * 16 + (bytZ5 - 1) \ 2
erg4 = ((bytZ5 - 1) Mod 2) * 128 + (bytZ6 - 1) * 4 + (bytZ7 - 1) \ 8
erg5 = ((bytZ7 - 1) Mod 8) * 32 + (bytZ8 - 1)
Debug.Print "Antwortwerte 32bit"
Debug.Print "************"
Debug.Print erg1
Debug.Print erg2
Debug.Print erg3
Debug.Print erg4
Debug.Print erg5
Debug.Print "_________________________________________________"
Debug.Print ""
End Sub
Danke noch mal das das kleine Mathegenie, welches helfen möchte.