обратный инженер формула Excel

Вы можете попробовать выполнить длительные вычисления в потоках (см. JavaScript и Threads ), хотя они не очень переносимы.

Вы также можете попробовать использовать некоторый Javascript-профайлер для найти узкие места производительности. Firebug поддерживает профилирование javascript.

2
задан JDB 18 January 2019 в 16:28
поделиться

2 ответа

N1 + n11 * 64

Выше можно записать как

 N1 = N1 + (n11 * 64)

, что совпадает с

 N1 + ((Asc(Left(R1, 1)) - 64) * 64)

что совпадает с

 (N1 + (Asc(Mid(R1, 2, 1)) - 64) * 64) + ((Asc(Left(R1, 1)) - 64) * 64)

и совпадает с

 (Asc(Right(R1, 1)) - 64 + (Asc(Mid(R1, 2, 1)) - 64) * 64) + ((Asc(Left(R1, 1)) - 64) * 64)

Опираясь на эту логику, можно получить то, что вы хотите

[ 1111] Вот функция для этого

Sub Sample()
    Dim shortdec As Long, dec As Long
    Dim hexcode As String

    hexcode = "E0340A" 
    'hexcode = "E0340B" '<~~ This will give you CPK

    dec = CLng("&H" & hexcode) '14693386
    shortdec = dec - 14680064 '1332

    Debug.Print GetString(shortdec)
End Sub

 Function GetString(n As Long) As String
    Dim i As Long, j As Long, k As Long
    Dim a As Long, b As Long, c As Long
    Dim x As Long

    For i = 65 To 90
        For j = 65 To 90
            For k = 65 To 90
                a = Asc(Chr(i)) - 64
                b = (Asc(Chr(j)) - 64) * 64
                c = (Asc(Chr(k)) - 64) * 64

                x = (a + b) + c * 64
                If x = n Then
                    GetString = Chr(k) & Chr(j) & Chr(i)
                    Exit Function
                End If
            Next k
        Next j
    Next i
 End Function

Мои предположения: Вы будете использовать заглавные буквы. Иначе вам также придется пройти через ASC 97 - 122.

0
ответ дан Siddharth Rout 18 January 2019 в 16:28
поделиться

У вас есть сумма в вашей первой процедуре

N1 = N1 + n11 * 64

, поэтому формулу нельзя отменить!

Объяснение:

Представьте, что у вас есть сумма 5 + 4 = 10. Тогда вы не сможете вернуть его, если знаете только сумму 10 и хотите знать a + b = 10, тогда существует более одного решения для a и b (на самом деле для этого есть бесконечные решения).

Поэтому ответ таков: ваш шестнадцатеричный код не может быть преобразован в 3 буквы.

0
ответ дан Pᴇʜ 18 January 2019 в 16:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: