02.08.2012, 18:34
Quote:
Funciona sim. O IP й 32 bits. Sгo 4 cйlulas de 1 byte de dados cada (atй 255). 8 x 4 = 32.
Ele pode ser representado como uma int e dado parse para float. O motivo de ter dado NaN, provavelmente, deve ter se dado а mantissa nгo ter nenhum dado e o expoente estar no canto direito (deve estar no esquerdo), dando valores invбlidos, pelo padrгo IEEE (http://en.wikipedia.org/wiki/IEEE_floating_point) |
255255255255 = 4 x 3 = 12 caracteres mбximos em um ip. Transformando isto em binбrio ficarб:
Quote:
1101110011001100001100011010111 |
-
O problema real disto й que em SA:MP ao um valor flutuante desta maneira retorna a ъltima cadeia com valores invбlidos (como eu jб havia me referido algo similar a Ken antes)
pawn Код:
printf("%.12f Isto nгo funcionara", 2.55255255255 ); // seja .13f ou .14f nгo funcionara
https://sampforum.blast.hk/showthread.php?tid=323055
O problema, й que assim pode haver colisхes, й raro, mas pode haver. Por este motivo, й mais viбvel o cуdigo que fiz lб encima (pode usar char para ocupar menos memуria a execuзгo й mais rбpida, se este й o problema).
=====
Nгo analisei bem seu cуdigo, mas a conclusгo й que nгo podemos representar o endereзo de forma "humanamente legнvel" em floats. Algo como "2.55255255255" em inteiros tambйm nгo
O IP mбximo que vocк poderia representar й aquele que expressa cellmax. O problema й que a primeira cadeia de cellmax, nгo poderia ser superior a 2 ou atй 1.
2.147.483.647
Isto nгo й suficiente para representar um endereзo de ip - diferente de classe a.