1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/vint.pyx Fri Sep 11 01:21:09 2009 +0200
1.3 @@ -0,0 +1,23 @@
1.4 +#!/usr/bin/env python
1.5 +
1.6 +cdef extern from "Python.h":
1.7 + object PyString_FromStringAndSize(char *, int)
1.8 +
1.9 +def vint(int number):
1.10 +
1.11 + cdef char bytes[40] # NOTE: Arbitrary limit.
1.12 + cdef int lsd, i
1.13 +
1.14 + i = 0
1.15 + while number != 0:
1.16 + lsd = number & 127
1.17 + number = number >> 7
1.18 + if number != 0:
1.19 + lsd = lsd | 128
1.20 + bytes[i] = lsd
1.21 + i = i + 1
1.22 +
1.23 + s = PyString_FromStringAndSize(bytes, i)
1.24 + return s
1.25 +
1.26 +# vim: tabstop=4 expandtab shiftwidth=4