Hm, I'm a bit reluctant to post here, because when I wrote my previous post on this thread I felt like letting off a bit of steam in defense of Bob. I couldn't see what's so horribly wrong with his solution given this particular context. I agree with what you say and in general you're right with your statement about using well-known and tested methods. And I also have to admit that I wasn't thinking of IPv6 because of that particular context:
The IP address returned by WifiInfo.getIpAddress() is a Java int. It cannot be an IPv6 number, because a Java int isn't big enough. Using bit shifting and string formatting on a 32 bits IP address number is a common technique that does not look obfuscated at all to me. And that is what happens under the hood anyway when calling the InetAddress.toString method. However, you raised a good point about dealing with IPv6 and making your code future-proof. Unfortunately with the current design of the WifiInfo class it doesn't seem to be possible to get an IPv6 address. I guess there needs to be an extension of its interface to support that. On Wednesday, February 20, 2013 4:11:42 AM UTC-6, Jxn wrote: > > Den tisdagen den 19:e februari 2013 kl. 18:30:45 UTC+1 skrev Nobu Games: > > Bob was asking for the string representation of an integer IP number. > His solution is correct, straightforward and does not require the > instantiation of three intermediate objects just for getting a simple > string. Your one-liner however creates a BigInteger, then a byte array and > finally an instance of InetAddress which still is not a string. It's > toString method may or may not return the resolved host name in addition to > the IP number string representation. That's not quite the original > requirement. > > > > But his solution isn't that wrong. The "easy" solution are plain wrong if > you have something else than IPv4 addresses. > > > On Tuesday, February 19, 2013 9:43:35 AM UTC-6, Larry Meadors wrote:On > Tue, Feb 19, 2013 at 8:05 AM, bob <[email protected]> wrote: > > > > > Why do you say that? > > > > > > > > Because it's a ridiculously obfuscated solution to a problem with a > > > > simple one-line solution: > > > > > > > > InetAddress address = > > > InetAddress.getByAddress(BigInteger.valueOf(actualIpAddressAsInt).toByteArray()); > > > > This uses a proper encapsulation at least, which the "simple" and "fast" > solution doesn't. I always prefer Slow and Right before Fast and Wrong. > > You should also allow the compiler to do the low level optimisation. Its > usually better than the programmer in doing that if you don't "optimize" > yourself. > > Happy codeing. > > -- -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en --- You received this message because you are subscribed to the Google Groups "Android Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.

