On 6/20/05, Keith Dart <kdart at kdart.com> wrote: > On Mon, 20 Jun 2005, Guido van Rossum wrote: [...] > > By far the easiest way to do arithmetic mod 2**32 is to just add "& > > 0xFFFFFFFF" to the end of your expression. For example, simulating the > > effect of multiplying an unsigned long by 3 would be x = (x * 3) & > > 0xFFFFFFFF. > > But then I wouldn't know if it overflowed 32 bits. Huh? C unsigned ints don't flag overflow either -- they perform perfect arithmetic mod 2**32. > In my usage, the > integer will be translated to an unsigned (32 bit) integer in another > system (SNMP). I want to know if it will fit, and I want to know early if > there will be a problem, rather than later (at conversion time). So check if it is >= 2**32 (or < 0, of course). > One of the "selling points" of Python in previous versions was that you > would get an OverFlowError on overflow, where other languages did not > (they overflowed silently). So I subclassed long in 2.3, to get the same > overflow exception: > ... > Again, because I want to catch the error early, before conversion to the > external type. This is a very specialized application. Your best approach is to check for overflow before passing into the external API -- ideally the wrappers for that API should do so. > > If there is a problem with ioctl() not taking long ints, that would be > > a bug in ioctl, not a lacking data type or a problem with long ints. > > That must be it, then. Shall I file a bug somewhere? SourceForge. (python.org/dev for more info) -- --Guido van Rossum (home page: http://www.python.org/~guido/)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4