Тема: AHK: Конвертация endians
Доброго времени суток. Прошу помочь написать функцию для конвертации байтов Big-endian(uint64) в Little-endian(uint64) и обратно.
Перепробовал множество способов.
Одна из попыток сделать так, как здесь: http://qaru.site/questions/2025004/c-htonll-and-back - завершилась также провалом.
Вот, базовые функции для конвертации:
ntohl(int) { ;net>x86
return DllCall("Ws2_32\ntohl", UInt, int, UInt)
}
htonl(int) { ;x86>net
return DllCall("Ws2_32\htonl", UInt, int, UInt)
}
ntohs(int) { ;net>x86
return DllCall("Ws2_32\ntohs", UShort, int, UShort)
}
htons(int) { ;x86>net
return DllCall("Ws2_32\htons", UShort, int, UShort)
}
Еще одна неудача: https://github.com/benesch/os161/blob/m … t/ntohll.c.
ntohll(int) {
if (ntohl(1)=1)
return int
x0:= int & 0xffffffff
y0:= ntohl(x0)
x1:= int >> 32
y1:= ntohl(x1)
return (y0 << 32) | y1
}