wolf9228 Posted March 4, 2021 Share Posted March 4, 2021 (edited) expandcollapse popup#include <Array.au3> $ByteA = 256 $ByteB = 128 $ByteC = 64 $ByteD = 32 $bBySet = 0 ; 32 MaxD And of $ByteD // From 1 to 32 $bBySet += ($ByteD - 1) * 256 * 128 * 64 ; 64 MaxC And of $ByteC // From 1 to 64 $bBySet += ($ByteC - 1) * 256 * 128 ; 128 MaxB And of $ByteB // From 1 to 128 $bBySet += ($ByteB - 1) * 256 ; 256 MaxA And Of $ByteA // From 1 to 256 $bBySet += $ByteA MsgBox(0,"",$bBySet) $cByArray = NumGet($bBySet,256,128,64,32) _ArrayDisplay($cByArray,"") $ByteA = 200 $ByteB = 90 $ByteC = 50 $ByteD = 10 $bBySet = 0 ; 32 MaxD And of $ByteD ; // From 1 to 32 $bBySet += ($ByteD - 1) * 256 * 128 * 64 ; 64 MaxC And of $ByteC // From 1 to 64 $bBySet += ($ByteC - 1) * 256 * 128 ; 128 MaxB And of $ByteB // From 1 to 128 $bBySet += ($ByteB - 1) * 256 ; 256 MaxA And Of $ByteA // From 1 to 256 $bBySet += $ByteA MsgBox(0,"Msg",$bBySet) $cByArray = NumGet($bBySet,256,128,64,32) _ArrayDisplay($cByArray,"") $ByteA = 256 $ByteB = 256 $ByteC = 256 $ByteD = 256 $ByteE = 256 $ByteF = 256 $ByteG = 256 $ByteH = 128 - 1 ; Max Autoit Reference Num = In caluclator scientific (256 * 256 * 256 * 256 * 256 * 256 * 256 * 128) - 1 ; 9223372036854775807 $bBySet = 0 $bBySet += ($ByteH - 1) * 256 * 256 * 256 * 256 * 256 * 256 * 256 $bBySet += ($ByteG - 1) * 256 * 256 * 256 * 256 * 256 * 256 $bBySet += ($ByteF - 1) * 256 * 256 * 256 * 256 * 256 $bBySet += ($ByteE - 1) * 256 * 256 * 256 * 256 $bBySet += ($ByteD - 1) * 256 * 256 * 256 $bBySet += ($ByteC - 1) * 256 * 256 $bBySet += ($ByteB - 1) * 256 $bBySet += $ByteA MsgBox(0,"Msg",$bBySet) $cByArray = NumGet($bBySet,256,256,256,256,256,256,127) _ArrayDisplay($cByArray,"") Func NumGet($NuSet,$MaxA,$MaxB,$MaxC = 1,$MaxD = 1,$MaxE = 1,$MaxF = 1,$MaxG = 1,$MaxH = 1) if $NuSet = 1 Then $NuH = 1 $NuG = 1 $NuF = 1 $NuE = 1 $NuD = 1 $NuC = 1 $NuB = 1 $NuA = 1 Else if $NuSet <= $MaxA Then $NuH = 1 $NuG = 1 $NuF = 1 $NuE = 1 $NuD = 1 $NuC = 1 $NuB = 1 $NuA = $NuSet Else if $NuSet <= ($MaxA * $MaxB) Then $NuH = 1 $NuG = 1 $NuF = 1 $NuE = 1 $NuD = 1 $NuC = 1 $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA Else if $NuSet <= ($MaxA * $MaxB * $MaxC) Then $NuH = 1 $NuG = 1 $NuF = 1 $NuE = 1 $NuD = 1 $NuC = Mod($NuSet,($MaxA * $MaxB * $MaxC)) $vMod = $NuC $NuC = ($vMod - Mod($vMod,($MaxA * $MaxB))) / ($MaxA * $MaxB) if Mod($vMod,($MaxA * $MaxB)) Then $NuC += 1 if Not $NuC Then $NuC = $MaxC $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA Else if $NuSet <= ($MaxA * $MaxB * $MaxC * $MaxD) Then $NuH = 1 $NuG = 1 $NuF = 1 $NuE = 1 $NuD = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD)) $vMod = $NuD $NuD = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC))) / ($MaxA * $MaxB * $MaxC) if Mod($vMod,($MaxA * $MaxB * $MaxC)) Then $NuD += 1 if Not $NuD Then $NuD = $MaxD $NuC = Mod($NuSet,($MaxA * $MaxB * $MaxC)) $vMod = $NuC $NuC = ($vMod - Mod($vMod,($MaxA * $MaxB))) / ($MaxA * $MaxB) if Mod($vMod,($MaxA * $MaxB)) Then $NuC += 1 if Not $NuC Then $NuC = $MaxC $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA Else if $NuSet <= ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE) Then $NuH = 1 $NuG = 1 $NuF = 1 $NuE = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) $vMod = $NuE $NuE = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD))) / ($MaxA * $MaxB * $MaxC * $MaxD) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD)) Then $NuE += 1 if Not $NuE Then $NuE = $MaxE $NuD = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD)) $vMod = $NuD $NuD = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC))) / ($MaxA * $MaxB * $MaxC) if Mod($vMod,($MaxA * $MaxB * $MaxC)) Then $NuD += 1 if Not $NuD Then $NuD = $MaxD $NuC = Mod($NuSet,($MaxA * $MaxB * $MaxC)) $vMod = $NuC $NuC = ($vMod - Mod($vMod,($MaxA * $MaxB))) / ($MaxA * $MaxB) if Mod($vMod,($MaxA * $MaxB)) Then $NuC += 1 if Not $NuC Then $NuC = $MaxC $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA Else if $NuSet <= ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF) Then $NuH = 1 $NuG = 1 $NuF = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF)) $vMod = $NuF $NuF = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE))) / ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) Then $NuF += 1 if Not $NuF Then $NuF = $MaxF $NuE = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) $vMod = $NuE $NuE = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD))) / ($MaxA * $MaxB * $MaxC * $MaxD) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD)) Then $NuE += 1 if Not $NuE Then $NuE = $MaxE $NuD = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD)) $vMod = $NuD $NuD = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC))) / ($MaxA * $MaxB * $MaxC) if Mod($vMod,($MaxA * $MaxB * $MaxC)) Then $NuD += 1 if Not $NuD Then $NuD = $MaxD $NuC = Mod($NuSet,($MaxA * $MaxB * $MaxC)) $vMod = $NuC $NuC = ($vMod - Mod($vMod,($MaxA * $MaxB))) / ($MaxA * $MaxB) if Mod($vMod,($MaxA * $MaxB)) Then $NuC += 1 if Not $NuC Then $NuC = $MaxC $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA Else if $NuSet <= ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG) Then $NuH = 1 $NuG = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG)) $vMod = $NuG $NuG = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF))) / ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF)) Then $NuG += 1 if Not $NuG Then $NuG = $MaxG $NuF = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF)) $vMod = $NuF $NuF = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE))) / ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) Then $NuF += 1 if Not $NuF Then $NuF = $MaxF $NuE = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) $vMod = $NuE $NuE = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD))) / ($MaxA * $MaxB * $MaxC * $MaxD) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD)) Then $NuE += 1 if Not $NuE Then $NuE = $MaxE $NuD = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD)) $vMod = $NuD $NuD = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC))) / ($MaxA * $MaxB * $MaxC) if Mod($vMod,($MaxA * $MaxB * $MaxC)) Then $NuD += 1 if Not $NuD Then $NuD = $MaxD $NuC = Mod($NuSet,($MaxA * $MaxB * $MaxC)) $vMod = $NuC $NuC = ($vMod - Mod($vMod,($MaxA * $MaxB))) / ($MaxA * $MaxB) if Mod($vMod,($MaxA * $MaxB)) Then $NuC += 1 if Not $NuC Then $NuC = $MaxC $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA Else $NuH = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG * $MaxH)) $vMod = $NuH $NuH = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG))) / ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG)) Then $NuH += 1 if Not $NuH Then $NuH = $MaxH $NuG = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG)) $vMod = $NuG $NuG = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF))) / ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF)) Then $NuG += 1 if Not $NuG Then $NuG = $MaxG $NuF = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF)) $vMod = $NuF $NuF = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE))) / ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) Then $NuF += 1 if Not $NuF Then $NuF = $MaxF $NuE = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) $vMod = $NuE $NuE = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD))) / ($MaxA * $MaxB * $MaxC * $MaxD) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD)) Then $NuE += 1 if Not $NuE Then $NuE = $MaxE $NuD = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD)) $vMod = $NuD $NuD = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC))) / ($MaxA * $MaxB * $MaxC) if Mod($vMod,($MaxA * $MaxB * $MaxC)) Then $NuD += 1 if Not $NuD Then $NuD = $MaxD $NuC = Mod($NuSet,($MaxA * $MaxB * $MaxC)) $vMod = $NuC $NuC = ($vMod - Mod($vMod,($MaxA * $MaxB))) / ($MaxA * $MaxB) if Mod($vMod,($MaxA * $MaxB)) Then $NuC += 1 if Not $NuC Then $NuC = $MaxC $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA EndIf EndIf EndIf EndIf EndIf EndIf EndIf EndIf Dim $NusAry[8] $NusAry[0] = $NuA $NusAry[1] = $NuB $NusAry[2] = $NuC $NusAry[3] = $NuD $NusAry[4] = $NuE $NusAry[5] = $NuF $NusAry[6] = $NuG $NusAry[7] = $NuH Return $NusAry EndFunc Edited March 4, 2021 by wolf9228 صرح السماء كان هنا Link to comment Share on other sites More sharing options...
spudw2k Posted March 5, 2021 Share Posted March 5, 2021 What if I wanted to store a zero? Spoiler Things I've Made: Always On Top Tool ◊ AU History ◊ Deck of Cards ◊ HideIt ◊ ICU ◊ Icon Freezer ◊ Ipod Ejector ◊ Junos Configuration Explorer ◊ Link Downloader ◊ MD5 Folder Enumerator ◊ PassGen ◊ Ping Tool ◊ Quick NIC ◊ Read OCR ◊ RemoteIT ◊ SchTasksGui ◊ SpyCam ◊ System Scan Report Tool ◊ System UpTime ◊ Transparency Machine ◊ VMWare ESX Builder Misc Code Snippets: ADODB Example ◊ CheckHover ◊ Detect SafeMode ◊ DynEnumArray ◊ GetNetStatData ◊ HashArray ◊ IsBetweenDates ◊ Local Admins ◊ Make Choice ◊ Recursive File List ◊ Remove Sizebox Style ◊ Retrieve PNPDeviceID ◊ Retrieve SysListView32 Contents ◊ Set IE Homepage ◊ Tickle Expired Password ◊ Transpose Array Projects: Drive Space Usage GUI ◊ LEDkIT ◊ Plasma_kIt ◊ Scan Engine Builder ◊ SpeeDBurner ◊ SubnetCalc Cool Stuff: AutoItObject UDF ◊ Extract Icon From Proc ◊ GuiCtrlFontRotate ◊ Hex Edit Funcs ◊ Run binary ◊ Service_UDF Link to comment Share on other sites More sharing options...
wolf9228 Posted March 5, 2021 Author Share Posted March 5, 2021 9 hours ago, spudw2k said: What if I wanted to store a zero? Add one to the saved numbers صرح السماء كان هنا Link to comment Share on other sites More sharing options...
RTFC Posted March 5, 2021 Share Posted March 5, 2021 (edited) This is simply amazing; who would have thought that up to eight fat bytes could be squeezed into a single tiny int64? $ByteA = 123 $ByteB = 234 $ByteC = 25 $ByteD = 255 $ByteE = 111 $ByteF = 0 $ByteG = 77 $ByteH = 99 $bytesbuffer=DllStructCreate("align 8;byte[8]") $int64buffer=DllStructCreate("int64",DllStructGetPtr($bytesbuffer)) DllStructSetData($bytesbuffer,1,$ByteA,1) DllStructSetData($bytesbuffer,1,$ByteB,2) DllStructSetData($bytesbuffer,1,$ByteC,3) DllStructSetData($bytesbuffer,1,$ByteD,4) DllStructSetData($bytesbuffer,1,$ByteE,5) DllStructSetData($bytesbuffer,1,$ByteF,6) DllStructSetData($bytesbuffer,1,$ByteG,7) DllStructSetData($bytesbuffer,1,$ByteH,8) ConsoleWrite("As one large integer: " & DllStructGetData($int64buffer,1) & @CRLF) ConsoleWrite("As eight bytes: " & @CRLF) For $index=1 To 8 ConsoleWrite("Byte " & $index & " = " & DllStructGetData($bytesbuffer,1,$index) & @CRLF) Next EDIT: I guess I'm going to have to find myself a sarcasm-emoji; maybe ? Edited March 8, 2021 by RTFC Gianni 1 My Contributions and Wrappers Spoiler BitMaskSudokuSolver BuildPartitionTable CodeCrypter CodeScanner DigitalDisplay Eigen4AutoIt FAT Suite HighMem MetaCodeFileLibrary OSgrid Pool RdRand SecondDesktop SimulatedAnnealing Xbase I/O Link to comment Share on other sites More sharing options...
wolf9228 Posted March 5, 2021 Author Share Posted March 5, 2021 1 hour ago, RTFC said: This is simply amazing; who would have thought that up to eight fat bytes could be squeezed into a single tiny int64? $ByteA = 123 $ByteB = 234 $ByteC = 25 $ByteD = 255 $ByteE = 111 $ByteF = 0 $ByteG = 77 $ByteH = 99 $bytesbuffer=DllStructCreate("align 8;byte[8]") $int64buffer=DllStructCreate("int64",DllStructGetPtr($bytesbuffer)) DllStructSetData($bytesbuffer,1,$ByteA,1) DllStructSetData($bytesbuffer,1,$ByteB,2) DllStructSetData($bytesbuffer,1,$ByteC,3) DllStructSetData($bytesbuffer,1,$ByteD,4) DllStructSetData($bytesbuffer,1,$ByteE,5) DllStructSetData($bytesbuffer,1,$ByteF,6) DllStructSetData($bytesbuffer,1,$ByteG,7) DllStructSetData($bytesbuffer,1,$ByteH,8) ConsoleWrite("As one large integer: " & DllStructGetData($int64buffer,1) & @CRLF) ConsoleWrite("As eight bytes: " & @CRLF) For $index=1 To 8 ConsoleWrite("Byte " & $index & " = " & DllStructGetData($bytesbuffer,1,$index) & @CRLF) Next int64 is two sets ... the number of elements of the two groups is equal, the first is positive plus zero and the other is negative. The probabilities of int64 complete are equal to 256 to the power of 8 صرح السماء كان هنا Link to comment Share on other sites More sharing options...
wolf9228 Posted March 5, 2021 Author Share Posted March 5, 2021 https://docs.microsoft.com/en-us/dotnet/api/system.int64?view=net-5.0 Int64 is an immutable value type that represents signed integers with values that range from negative 9,223,372,036,854,775,808 (which is represented by the Int64.MinValue constant) through positive 9,223,372,036,854,775,807 (which is represented by the Int64.MaxValue constant. The .NET Framework also includes an unsigned 64-bit integer value type, UInt64, which represents values that range from 0 to 18,446,744,073,709,551,615. صرح السماء كان هنا Link to comment Share on other sites More sharing options...
spudw2k Posted March 7, 2021 Share Posted March 7, 2021 On 3/5/2021 at 11:09 PM, wolf9228 said: Add one to the saved numbers $ByteA = 0 $ByteB = 0 $ByteC = 0 $ByteD = 32 $bBySet = 0 ; 32 MaxD And of $ByteD // From 1 to 32 $bBySet += ($ByteD - 1) * 256 * 128 * 64 ; 64 MaxC And of $ByteC // From 1 to 64 $bBySet += ($ByteC - 1) * 256 * 128 ; 128 MaxB And of $ByteB // From 1 to 128 $bBySet += ($ByteB - 1) * 256 ; 256 MaxA And Of $ByteA // From 1 to 256 $bBySet += $ByteA ;~ MsgBox(0,"",$bBySet) $cByArray = NumGet($bBySet,256,128,64,32) _ArrayDisplay($cByArray,"") Not getting the results I expected, or I am not understanding how it is supposed to work. Spoiler Things I've Made: Always On Top Tool ◊ AU History ◊ Deck of Cards ◊ HideIt ◊ ICU ◊ Icon Freezer ◊ Ipod Ejector ◊ Junos Configuration Explorer ◊ Link Downloader ◊ MD5 Folder Enumerator ◊ PassGen ◊ Ping Tool ◊ Quick NIC ◊ Read OCR ◊ RemoteIT ◊ SchTasksGui ◊ SpyCam ◊ System Scan Report Tool ◊ System UpTime ◊ Transparency Machine ◊ VMWare ESX Builder Misc Code Snippets: ADODB Example ◊ CheckHover ◊ Detect SafeMode ◊ DynEnumArray ◊ GetNetStatData ◊ HashArray ◊ IsBetweenDates ◊ Local Admins ◊ Make Choice ◊ Recursive File List ◊ Remove Sizebox Style ◊ Retrieve PNPDeviceID ◊ Retrieve SysListView32 Contents ◊ Set IE Homepage ◊ Tickle Expired Password ◊ Transpose Array Projects: Drive Space Usage GUI ◊ LEDkIT ◊ Plasma_kIt ◊ Scan Engine Builder ◊ SpeeDBurner ◊ SubnetCalc Cool Stuff: AutoItObject UDF ◊ Extract Icon From Proc ◊ GuiCtrlFontRotate ◊ Hex Edit Funcs ◊ Run binary ◊ Service_UDF Link to comment Share on other sites More sharing options...
wolf9228 Posted March 12, 2021 Author Share Posted March 12, 2021 On 3/7/2021 at 2:53 PM, spudw2k said: $ByteA = 0 $ByteB = 0 $ByteC = 0 $ByteD = 32 $bBySet = 0 ; 32 MaxD And of $ByteD // From 1 to 32 $bBySet += ($ByteD - 1) * 256 * 128 * 64 ; 64 MaxC And of $ByteC // From 1 to 64 $bBySet += ($ByteC - 1) * 256 * 128 ; 128 MaxB And of $ByteB // From 1 to 128 $bBySet += ($ByteB - 1) * 256 ; 256 MaxA And Of $ByteA // From 1 to 256 $bBySet += $ByteA ;~ MsgBox(0,"",$bBySet) $cByArray = NumGet($bBySet,256,128,64,32) _ArrayDisplay($cByArray,"") Not getting the results I expected, or I am not understanding how it is supposed to work. There is a maximum that must be adhered to during set and get. I will give other examples later ... Thanks. صرح السماء كان هنا Link to comment Share on other sites More sharing options...
wolf9228 Posted March 12, 2021 Author Share Posted March 12, 2021 New Example expandcollapse popup#include <Array.au3> $NumA = 256 $NumB = 128 $NumC = 64 $NumD = 32 $bBySet = NumbSet(256,$NumA,128,$NumB,64,$NumC,32,$NumD) MsgBox(0,"",$bBySet) $cByArray = NumGet($bBySet,256,128,64,32) _ArrayDisplay($cByArray,"") $NumA = 25 $NumB = 12 $NumC = 6 $NumD = 3 $bBySet = NumbSet(256,$NumA,128,$NumB,64,$NumC,32,$NumD) MsgBox(0,"",$bBySet) $cByArray = NumGet($bBySet,256,128,64,32) _ArrayDisplay($cByArray,"") $NumA = 200 $NumB = 100 $NumC = 50 $NumD = 25 $bBySet = NumbSet(256,$NumA,128,$NumB,64,$NumC,32,$NumD) MsgBox(0,"",$bBySet) $cByArray = NumGet($bBySet,256,128,64,32) _ArrayDisplay($cByArray,"") Func NumbSet($MaxNuA , $NuA ,$MaxNuB,$NuB,$MaxNuC = 1,$NuC = 1,$MaxNuD = 1,$NuD = 1, _ $MaxNuE = 1,$NuE = 1,$MaxNuF = 1,$NuF = 1,$MaxNuG = 1,$NuG = 1,$MaxNuH = 1,$NuH = 1) if $MaxNuA < 1 Or $NuA < 1 Or $MaxNuB < 1 Or $NuB < 1 Or $MaxNuC < 1 Or $NuC < 1 Or _ $MaxNuD < 1 Or $NuD < 1 Or $MaxNuE < 1 Or $NuE < 1 Or $MaxNuF < 1 Or $NuF < 1 Or _ $MaxNuG < 1 Or $NuG < 1 Or $MaxNuH < 1 Or $NuH < 1 Then Return SetError(1,0,0) if $NuA > $MaxNuA or $NuB > $MaxNuB or $NuC > $MaxNuC or $NuD > $MaxNuD or _ $NuE > $MaxNuE or $NuF > $MaxNuF or $NuG > $MaxNuG or $NuH > $MaxNuH Then Return SetError(2,0,0) $ByteSet = 0 $ByteSet += ($NuH - 1) * $MaxNuA * $MaxNuB * $MaxNuC * $MaxNuD * $MaxNuE * $MaxNuF * $MaxNuG $ByteSet += ($NuG - 1) * $MaxNuA * $MaxNuB * $MaxNuC * $MaxNuD * $MaxNuE * $MaxNuF $ByteSet += ($NuF - 1) * $MaxNuA * $MaxNuB * $MaxNuC * $MaxNuD * $MaxNuE $ByteSet += ($NuE - 1) * $MaxNuA * $MaxNuB * $MaxNuC * $MaxNuD $ByteSet += ($NuD - 1) * $MaxNuA * $MaxNuB * $MaxNuC $ByteSet += ($NuC - 1) * $MaxNuA * $MaxNuB $ByteSet += ($NuB - 1) * $MaxNuA $ByteSet += $NuA Return SetError(0,0,$ByteSet) EndFunc Func NumGet($NuSet,$MaxA,$MaxB,$MaxC = 1,$MaxD = 1,$MaxE = 1,$MaxF = 1,$MaxG = 1,$MaxH = 1) if $NuSet = 1 Then $NuH = 1 $NuG = 1 $NuF = 1 $NuE = 1 $NuD = 1 $NuC = 1 $NuB = 1 $NuA = 1 Else if $NuSet <= $MaxA Then $NuH = 1 $NuG = 1 $NuF = 1 $NuE = 1 $NuD = 1 $NuC = 1 $NuB = 1 $NuA = $NuSet Else if $NuSet <= ($MaxA * $MaxB) Then $NuH = 1 $NuG = 1 $NuF = 1 $NuE = 1 $NuD = 1 $NuC = 1 $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA Else if $NuSet <= ($MaxA * $MaxB * $MaxC) Then $NuH = 1 $NuG = 1 $NuF = 1 $NuE = 1 $NuD = 1 $NuC = Mod($NuSet,($MaxA * $MaxB * $MaxC)) $vMod = $NuC $NuC = ($vMod - Mod($vMod,($MaxA * $MaxB))) / ($MaxA * $MaxB) if Mod($vMod,($MaxA * $MaxB)) Then $NuC += 1 if Not $NuC Then $NuC = $MaxC $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA Else if $NuSet <= ($MaxA * $MaxB * $MaxC * $MaxD) Then $NuH = 1 $NuG = 1 $NuF = 1 $NuE = 1 $NuD = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD)) $vMod = $NuD $NuD = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC))) / ($MaxA * $MaxB * $MaxC) if Mod($vMod,($MaxA * $MaxB * $MaxC)) Then $NuD += 1 if Not $NuD Then $NuD = $MaxD $NuC = Mod($NuSet,($MaxA * $MaxB * $MaxC)) $vMod = $NuC $NuC = ($vMod - Mod($vMod,($MaxA * $MaxB))) / ($MaxA * $MaxB) if Mod($vMod,($MaxA * $MaxB)) Then $NuC += 1 if Not $NuC Then $NuC = $MaxC $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA Else if $NuSet <= ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE) Then $NuH = 1 $NuG = 1 $NuF = 1 $NuE = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) $vMod = $NuE $NuE = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD))) / ($MaxA * $MaxB * $MaxC * $MaxD) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD)) Then $NuE += 1 if Not $NuE Then $NuE = $MaxE $NuD = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD)) $vMod = $NuD $NuD = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC))) / ($MaxA * $MaxB * $MaxC) if Mod($vMod,($MaxA * $MaxB * $MaxC)) Then $NuD += 1 if Not $NuD Then $NuD = $MaxD $NuC = Mod($NuSet,($MaxA * $MaxB * $MaxC)) $vMod = $NuC $NuC = ($vMod - Mod($vMod,($MaxA * $MaxB))) / ($MaxA * $MaxB) if Mod($vMod,($MaxA * $MaxB)) Then $NuC += 1 if Not $NuC Then $NuC = $MaxC $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA Else if $NuSet <= ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF) Then $NuH = 1 $NuG = 1 $NuF = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF)) $vMod = $NuF $NuF = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE))) / ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) Then $NuF += 1 if Not $NuF Then $NuF = $MaxF $NuE = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) $vMod = $NuE $NuE = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD))) / ($MaxA * $MaxB * $MaxC * $MaxD) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD)) Then $NuE += 1 if Not $NuE Then $NuE = $MaxE $NuD = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD)) $vMod = $NuD $NuD = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC))) / ($MaxA * $MaxB * $MaxC) if Mod($vMod,($MaxA * $MaxB * $MaxC)) Then $NuD += 1 if Not $NuD Then $NuD = $MaxD $NuC = Mod($NuSet,($MaxA * $MaxB * $MaxC)) $vMod = $NuC $NuC = ($vMod - Mod($vMod,($MaxA * $MaxB))) / ($MaxA * $MaxB) if Mod($vMod,($MaxA * $MaxB)) Then $NuC += 1 if Not $NuC Then $NuC = $MaxC $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA Else if $NuSet <= ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG) Then $NuH = 1 $NuG = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG)) $vMod = $NuG $NuG = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF))) / ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF)) Then $NuG += 1 if Not $NuG Then $NuG = $MaxG $NuF = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF)) $vMod = $NuF $NuF = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE))) / ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) Then $NuF += 1 if Not $NuF Then $NuF = $MaxF $NuE = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) $vMod = $NuE $NuE = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD))) / ($MaxA * $MaxB * $MaxC * $MaxD) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD)) Then $NuE += 1 if Not $NuE Then $NuE = $MaxE $NuD = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD)) $vMod = $NuD $NuD = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC))) / ($MaxA * $MaxB * $MaxC) if Mod($vMod,($MaxA * $MaxB * $MaxC)) Then $NuD += 1 if Not $NuD Then $NuD = $MaxD $NuC = Mod($NuSet,($MaxA * $MaxB * $MaxC)) $vMod = $NuC $NuC = ($vMod - Mod($vMod,($MaxA * $MaxB))) / ($MaxA * $MaxB) if Mod($vMod,($MaxA * $MaxB)) Then $NuC += 1 if Not $NuC Then $NuC = $MaxC $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA Else $NuH = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG * $MaxH)) $vMod = $NuH $NuH = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG))) / ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG)) Then $NuH += 1 if Not $NuH Then $NuH = $MaxH $NuG = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF * $MaxG)) $vMod = $NuG $NuG = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF))) / ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF)) Then $NuG += 1 if Not $NuG Then $NuG = $MaxG $NuF = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE * $MaxF)) $vMod = $NuF $NuF = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE))) / ($MaxA * $MaxB * $MaxC * $MaxD * $MaxE) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) Then $NuF += 1 if Not $NuF Then $NuF = $MaxF $NuE = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD * $MaxE)) $vMod = $NuE $NuE = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD))) / ($MaxA * $MaxB * $MaxC * $MaxD) if Mod($vMod,($MaxA * $MaxB * $MaxC * $MaxD)) Then $NuE += 1 if Not $NuE Then $NuE = $MaxE $NuD = Mod($NuSet,($MaxA * $MaxB * $MaxC * $MaxD)) $vMod = $NuD $NuD = ($vMod - Mod($vMod,($MaxA * $MaxB * $MaxC))) / ($MaxA * $MaxB * $MaxC) if Mod($vMod,($MaxA * $MaxB * $MaxC)) Then $NuD += 1 if Not $NuD Then $NuD = $MaxD $NuC = Mod($NuSet,($MaxA * $MaxB * $MaxC)) $vMod = $NuC $NuC = ($vMod - Mod($vMod,($MaxA * $MaxB))) / ($MaxA * $MaxB) if Mod($vMod,($MaxA * $MaxB)) Then $NuC += 1 if Not $NuC Then $NuC = $MaxC $NuB = Mod($NuSet,($MaxA * $MaxB)) $vMod = $NuB $NuB = ($vMod - Mod($vMod,$MaxA)) / $MaxA if Mod($vMod,$MaxA) Then $NuB += 1 if Not $NuB Then $NuB = $MaxB $NuA = Mod($NuSet,$MaxA) if Not $NuA Then $NuA = $MaxA EndIf EndIf EndIf EndIf EndIf EndIf EndIf EndIf Dim $NusAry[8] $NusAry[0] = $NuA $NusAry[1] = $NuB $NusAry[2] = $NuC $NusAry[3] = $NuD $NusAry[4] = $NuE $NusAry[5] = $NuF $NusAry[6] = $NuG $NusAry[7] = $NuH Return $NusAry EndFunc صرح السماء كان هنا Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now