Package: python2.3
Version: 2.3.5-1
Severity: normal
*** Please type your report below this line ***
Hello,
I've tried to convert DJB's "tai64nlocal" program from C to Python. This
looks easy since the code can more or less be used 1:1 in both
languages, but requires proper handling of very long integers.
This is not the case: underway, the variables were turned negative after
shifts, and not extended. Exchanging the shifts ("<<=") with
multiplications ("*=") fixed the results. The code:
----------- cut
import sys, string
from time import mktime, localtime
digits = { '0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6,
'7': 7, '8': 8, '9': 9, 'a': 10, 'b': 11, 'c': 12,
'd': 13, 'e': 14, 'f': 15 }
def readTai64 (stamp):
secs = 0
nanosecs = 0
for i in stamp:
if i == '@': continue
if i > 'f': break
print "readTai64(%s): i= %s" % (stamp, i)
u = digits[i]
secs *= 16
secs += nanosecs >> 28
nanosecs &= 0x0fffffff
nanosecs *= 16
nanosecs += u
print "readTai64(%s): u= %s secs= %s nanosecs= %s" % (stamp, u,
secs, nanosecs)
secs -= 4611686018427387914
t = localtime(secs)
return [ t, secs, nanosecs ]
if __name__ == '__main__':
"""simulate tai64nlocal"""
for f in sys.argv[1:]:
for l in file(f):
print "l: %s\n" % l
stamp, body = string.split (l, ' ', 1)
print readTai64(stamp), body
----------- cut
Test case data:
@400000004238b09c2cc80704 something
should result in printing a time stamp of 2005-03-16 23:17:54.751306500,
but won't if you put back in the shift operators.
Best,
--Toni++
-- System Information:
Debian Release: 3.1
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.4.27-2-686-smp
Locale: [EMAIL PROTECTED], [EMAIL PROTECTED] (charmap=ISO-8859-15)
Versions of packages python2.3 depends on:
ii libbz2-1.0 1.0.2-5 high-quality block-sorting file co
ii libc6 2.3.2.ds1-20 GNU C Library: Shared libraries an
ii libdb4.2 4.2.52-18 Berkeley v4.2 Database Libraries [
ii libncurses5 5.4-4 Shared libraries for terminal hand
ii libreadline4 4.3-15 GNU readline and history libraries
ii libssl0.9.7 0.9.7e-3 SSL shared libraries
ii zlib1g 1:1.2.2-4 compression library - runtime
-- no debconf information
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]