Glad TT made a post for this:
Number Base Conversion Macro (very neat!) (google.com)
<https://groups.google.com/g/tiddlywiki/c/mBm0nW95NzE/m/hEbl5q9ZCgAJ>
It could probably be simplified now that we have the remainder function.
On Sunday, January 24, 2021 at 9:39:43 PM UTC-8 TW Tones wrote:
> Folks,
>
> I thought I would put out this challenge, as each time I work on it I get
> in intellectual loops. Whilst I would appreciate others having a go it is
> also to put out a challenge for new and experienced users alike and can
> produce a useable set of code patterns.
>
> * The Idea*
>
> Take an Arbitrary character set as defined in this macro;
> \define char-set()
> 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
>
> I would like to generate a serial number for tiddlers but convert them to
> this character set which is even more compact than HEX (Which has 16
> possible values) this character set is strait forward but has 10+26+26 or
> 62 characters. That is 5 characters can represent up to the decimal
> 916,132,832
> - yes that is almost a billion. and 6 characters to 56,800,235,584 Wow!
> .
> Now we may also want a way to convert (large) decimal numbers to this
> character set or values in this character set back to decimal.
>
> *Background;*
> Each new tiddler can be issued with a serial number, add one for the next,
> however all we need is such number to be unique, so before saving it in a
> tiddler we can compress it before saving for a tiddler. In this case we
> convert it to base 62. We may never need to reverse this, however being
> able to do so is a useful exercise.
>
> - You could use this type of set up to "encrypt content" that will not
> work unless the character set is provided (of course these can be cracked)
> but for fun.
>
>
> - A carefully crafted solution could just have the character set
> changed for conversions between any number base system decimal, octal,
> hexadecimal, binary and even arbitrary ones like mine above base 62
>
> *Here are some code fragments*
> <$set name=base filter="[<char-set>split[]count[]]">
> This set will count the characters in the character set and tell us what
> the numeric base is.
>
> Input <$edit-text tiddler=temp field="input-number"/> [[temp]]
> This accepts input of a number or string we may convert
>
> <$set name=number filter="[[temp]get[input-number]]">
> This sets the number provided to a variable
>
> <$set name=size filter="[<number>length[]]">
> This gets the size of the number or string
>
> With the new power operator we can compute values to the power of 1, 2,
> 3...
>
> {{{ [<char-set>split[]nth<position>] }}}
> This will return a character from out character set in the nth <<position>>
>
> Like any code challenge the winner as judged by each of us individually,
> is the most elegant, easiest to read, efficient etc...
>
> Most of all, have fun. Yes I may compete in this challenge as well.
>
> Tones
>
--
You received this message because you are subscribed to the Google Groups
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/tiddlywiki/1c07f333-bbde-4982-91bd-32483a5cdc61n%40googlegroups.com.