Skip to content

Instantly share code, notes, and snippets.

@jn0
Last active September 15, 2020 07:35
Show Gist options
  • Select an option

  • Save jn0/fdcdde128171a7d16da8b223670050ef to your computer and use it in GitHub Desktop.

Select an option

Save jn0/fdcdde128171a7d16da8b223670050ef to your computer and use it in GitHub Desktop.
integer to string at arbitrary (2..36) base
import string
def signum(n):
return int(n / abs(n)) if n else 0
def i2s(n, b=10, d=string.digits+string.ascii_lowercase):
assert 2 <= b <= len(d)
return d[0] if n == 0 else ('-' + i2s(abs(n), b, d)) if n < 0 else (i2s(n//b, b, d) + d[n % b]).lstrip(d[0])
@jn0
Copy link
Copy Markdown
Author

jn0 commented Sep 15, 2020

Close-to-maximum length value:

In [83]: i2s(-1 * 1<<15416, 36)                                                                         
Out[83]: '-lwselltrgfslw0y317ho07ebz4dcosymi12zg9zafifvhgpziuxlwsemwwiikd3m8skerl2p4f9n6f2sixg9pcm4dgy44ljizyi6mes2gddu2q4lmis4vrzi4sgnp9hjj8u48chli9kw4ol21xe6vlkjfygt97jspdjenc6w1h4xadh5g7sh7k9szrxn9x8l4mev4o4mihg6f2ck48mygnrcn4cuup004lsd9qgs3yirxyytqh4du1mi0wogk1lyyp8t9f2g0k3t5mwad191vvthloomwekd21alh5iw2t51hnwfp3kda1coii8b99epln9rfuyypyjtd03nx2mhphgy7y77lg68aum54jugk1z6v00s4azertzeha33wnv9nqo4gu9z0olli3n18viccu0xtvczwkomkfqgv4fgqgwy8fz2jsqc2tsajb13b0nsmxa7nlwy7fv519vx0ms4q9pnkvbv1w40nuc4wlp927mwkoo8pir4vp6tys8f6azhxqj90458l8f87h4tbxbzmtwuesxis1easrdly2oml9r4yyt525rasndhexa0zpo0oc6a9hpdvbv6g0nap6zbghmmr4yvcnt622eh4y6p5hcrwgbl8kkg6tde32mtt8ininy8ogwa1q0tgxrair20u4mjlr8bbz0hqny1qrwtlskww7vzps4n0ozi36liamv7gm0zguzsehiq8a67uc75zq0uc9s053hba784j8aytox2sk4qqzuf2oit7k7gblpc5xtfp4h7l5ivjbk9g9nvt7j2zpqdkr8l2zvswwwg5toaq3tpehpry2nvyn7fw7v1uxp9jyr84sv9rarfb6sqc5w6sjbr9v9xytburw50yhqxtxk3cmsl4z900c9z0e65kl68ljmtqu5wiufczrd4qv89l0x0psmmypt7lyhq56hkq29jouixz2ey0wi2cnxbfzvaqc94g04in3lzrpo2i3ijzbeq1lxkx4wjojgfu0fz7oackc177u8ndkuistmhbh2vz0uua0atqdb7yv3nn9feoax9nu5gho7axkj79zlvwr0bxdk5gi20lqp3ce54ss4y2sgdcrf4l4xayb2cjo6q41b780rzy66zjp5x975bzxrkbccsx7gafigz940jyb9gc4jfvcil6d5dko3i2v37ejs2e4cxsysc01sfohogpg7piq3x8w5pqvm2sdnxtm02qjkzpp9srw8ke1v2ilu7cv47yip9e07nqcvw8u7kra6jfgdtt2nj703yw95sebdsgm44dsdv52a8x9ooyzj6nvbowx3nzjsmyhkdnqpr05swllwbzuahonsec0az3cebplanh3lpt4lsr91c56zuwj8h1dwmw28sa8fxa1ypuks7nfg2uutsrn0rsez5bnt5vnqalax30mbg91uwrmd5dny6ul8d8y2s6w9dhq6diox171uo3dgo7w10k756hdcrn138d5hbglqre6mbbykd0g0zfsgvq28ihedwacn8kbp8vchqjcwnr67xrfual1nnxej5kkl39k0091ddp0hdr5idpgkwvs6yq44w4vowsngfq53c33q8wk4vh6p8usr1ki8c6cwr05n5i5t6pt3qpmnetn07s8c5h0go3aq3iot61no4b571wadat5zzfvuem2042db2fm9oiqj4avxfu1su6daajd5t7g6iqje258lf0zv3a061zmgnity940k3ozuf4t7tg2j8bsra5q0n19jgtpxg2auxcgh6kq9l1pirqsthtjok5wmzz2h6kw07xsdfrq4n0ly8vibnukf0zl5r0frvw2rkur51k8xdb2wlr96ien0p5ajmxg381txf71xoev1kmzz45tnj1d4irhfunekyq7pgy41xvq2kmukaspdoq2814bvtr4enjh7ktyrf9f0v7quewcw5o9k47bqzi60cpgt4bw3kc8yef4bw6jgs19juy704kqqhijxkzydhzz77a12l1vd3r39cpxjxa1zf3sqna59h95c72afnfiuu3jwbsi5fce8wqrw6jfvqp1mct1azwyg0ikxzyjgoyrumo2ylgnq4un1ej1hchd3crgrb1co3zdwifxtitbthuhowqi3wykm1iwqm8vhzy9p8bha1ma5luhfsb3vfa0m1y6dm3ocqm9c9ytraha34lyfl7v5an6nd19c6fueslzknv0ufqblqs3c730louwzjk2aqexe6sfovwxdi7v1powys4lndsv1m4pnshgvr32laoo93zcdyvs7y5fw5hlmpmnfgyfzsictasvxrtpdcg0y582mxyfiw2zz69e4h8eoky8e0rncb5d82xqcz53y0zgrq2rzh59mhjpeqxots425vz6tujksbe40t95om85kmt8joz4t7h8q62uzrf6ns144i5m92jqbe76hptvm8a6x1abvv617ywu1tbt3w86webtm2zkylqw7chzzqsbgtdj29gk88xzhrl9qst2p5oh5ilcmohtfy1llm2qwhaxrq5466ezf8wljujgo4z63i6xgcb9rjcuj75f8l7r9261mksldqbqmek3ev60qzz2say2qin4atscadkz4hw6f69556n4h9anpjx7grfre8vqsl3dlbir3qouuv8aqe6lvr69a5lnrts8fcjbvgehhm4fwz3rkehqfxy23t4wkchojv4f7jo9otl97xj33coazy542ctf622xfxso78ut4l3hyiycy3s5bq6jfpnwj27880o59gtpb160imxaofrplyd89hvv7klnz10jd723jlys793v23t5h4m0dgbypibizzh0mifhf4p00xi1qa1lv83kmk22b5v48cfv9gvbkorqrgoq8al2h18n70tl3zzlcunc66n235ap8osa7msjcqyisjmqwoq4332lo9uvn79nhijm6nc6906rpeip132gv9qpacwu6qgyq3bmd5mttwnk91j4'

In [84]: len(i2s(-1 * 1<<15416, 36))                                                                    
Out[84]: 2983

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment