1

Тема: AHK: разложение строки на числа

Здравствуйте. У меня есть 2 цвета. Мне нужно понять как сильно они отличаются друг от друга.
Пример:
color1 := 0xFFFFF5
color2 := 0xFEFDFF
dif := color1 - color2 -> abs(FF - FE) + abs(FF - FD) + abs(F5 - FF) -> 1 + 2 + 10 = 13; результат "13"

2

Re: AHK: разложение строки на числа

Например, так можно:

color1 := 0xFFFFF5
color2 := 0xFEFDFF

VarSetCapacity(buff, 8)
NumPut(color2, NumPut(color1, buff, "UInt"), "UInt")
Loop 3
   diff += Abs(*(&buff + A_Index - 1) - *(&buff + A_Index + 3))
MsgBox, % diff
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: serzh82saratov, 2020-04-23 00:29:20)

Re: AHK: разложение строки на числа

Или так:

color1 := 0xFFFFF5
color2 := 0xFEFDFF

While (b := (8 * (A_Index - 1))) < 17
	r += ((color1 ^ color2) & 0xff << b) >> b  
	
MsgBox % r
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: разложение строки на числа

Класс!

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: разложение строки на числа

Неа, перемудрил, так производительнее.


color1 := 0xFFFFF5
color2 := 0xFEFDFF 
 
Loop % 3 + (r := 0, x := color1 ^ color2) 
	b := (8 * (A_Index - 1)), (r += (x & 0xff << b) >> b) 

MsgBox % r
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui