EnTerr
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-11-2015
07:25 PM
Re: Casting Larger Numbers to String
"RokuKC" wrote:
Having StrI(int, 10) format as signed is by design, and I don't anticipate that changing.
I am guessing you said "by design" to mean that the behavior comes from implementation where stri(intVal) has implied radix=10 from a general definition like
function stri(intVal as Integer, radix = 10 as Integer) as String
Bur RokuKC, why not improve on that design, if it bene-fits? Like so, change the default to -10:
function stri(intVal as Integer, radix = -10 as Integer) as StringAnd thus, calling stri with 2nd argument positive radix will give us unsigned representation and 10 will act as every other number in the 2..36 interval. Where calling w/o 2nd argument will give the signed decimal representation.
I personally think that additional options or APIs should be provided for more formatting control.
E.g. printf-like control over padding, width, alignment, precision; and separator/decimal formatting including locale-specific support.
That... that's "double trouble" 8-) . It both requires significant work and is mostly about double type (or up-conversions thereof).
Where unsigned int string representation is needed often in daily programming, so let's not leave it to a universal sprintf

NewManLiving
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-15-2015
06:49 AM
Re: Casting Larger Numbers to String
You can also use request.GetId().ToStr()
My Channels: 2D API Framework Presentation: https://owner.roku.com/add/2M9LCVC
Updated: 11-11-2015 - Completed Keyboard interface
The Joel Channel ( Final Beta )
Updated: 11-11-2015 - Completed Keyboard interface
The Joel Channel ( Final Beta )
EnTerr
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-17-2015
01:17 PM
Re: Casting Larger Numbers to String
"NewManLiving" wrote:`request.GetId().ToStr()` is virtually equivalent to `stri(request.GetId())` (the latter being a bit faster) in that it returns signed representation of the ints.
You can also use request.GetId().ToStr()
To refresh, two different things were discussed in the thread - first was about generating reliable/non-colliding AA keys from Integers - and that is covered by stri(), regardless if signed-int or unsigned-other-than-10-radix.
The second one was about externalizing unsigned Integer to a decimal string (say you have timestamp in milliseconds to send to a server) - for that there is no good/efficient solution in BrS.

NewManLiving
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-17-2015
02:07 PM
Re: Casting Larger Numbers to String
I always appreciate your posts EnTerr and also the many examples of your brilliant brain that is a benefit to all of us. I am waiting patiently for you to write a JIT Brightscript bytecode compiler. And while I completely agree with all you have recapped for us, the original question can be adequately addressed with a simple roInteger function
My Channels: 2D API Framework Presentation: https://owner.roku.com/add/2M9LCVC
Updated: 11-11-2015 - Completed Keyboard interface
The Joel Channel ( Final Beta )
Updated: 11-11-2015 - Completed Keyboard interface
The Joel Channel ( Final Beta )
EnTerr
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-17-2015
02:36 PM
Re: Casting Larger Numbers to String
"NewManLiving" wrote:
I always appreciate your posts EnTerr and also the many examples of your brilliant brain that is a benefit to all of us. I am waiting patiently for you to write a JIT Brightscript bytecode compiler. ...
Ha-haa, that's entertaining thought. I probably would have done that - write a dialect of Python or Lua or JavaScript that compiled to bytecode and then ran as everything else B/S on Roku - not likely to happen though, since if anything, RokuCo are heading towards hiding the VM and not exposing it (i don't know if you remember once upon a time there was a `da` console command to see the p-code).

NewManLiving
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-17-2015
02:51 PM
Re: Casting Larger Numbers to String
No I did not know about that command. And yes it is an entertaining thought
My Channels: 2D API Framework Presentation: https://owner.roku.com/add/2M9LCVC
Updated: 11-11-2015 - Completed Keyboard interface
The Joel Channel ( Final Beta )
Updated: 11-11-2015 - Completed Keyboard interface
The Joel Channel ( Final Beta )
EnTerr
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-18-2015
10:43 AM
Re: Casting Larger Numbers to String
Mind you, B/S is not a bad language. Quirky - yes, maybe like Perl but nothing as bad as PHP. The real problems lay with the libraries/components - behavior and documentation. Getting another language or VM won't help with that.
EnTerr
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-03-2016
07:37 PM
Re: Casting Larger Numbers to String
"RokuKC" wrote:
Having StrI(int, 10) format as signed is by design, and I don't anticipate that changing.
RokuKC -
can you however put a formal request to make Stri() able to output unsigned decimals?
Or is it that me failing to convince you personally, such request is dead in the water?
"EnTerr" wrote:
I am guessing you said "by design" to mean that the behavior comes from implementation where stri(intVal) has implied radix=10 from a general definition likefunction stri(intVal as Integer, radix = 10 as Integer) as String
Bur RokuKC, why not improve on that design, if it bene-fits? Like so, change the default to -10:function stri(intVal as Integer, radix = -10 as Integer) as StringAnd thus, calling stri with 2nd argument positive radix will give us unsigned representation and 10 will act as every other number in the 2..36 interval. Where calling w/o 2nd argument will give the signed decimal representation.


Roku Employee
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-04-2016
02:27 PM
Re: Casting Larger Numbers to String
"EnTerr" wrote:"RokuKC" wrote:
Having StrI(int, 10) format as signed is by design, and I don't anticipate that changing.
RokuKC -
can you however put a formal request to make Stri() able to output unsigned decimals?
Or is it that me failing to convince you personally, such request is dead in the water?
I can see a case for extending StrI to accept -10 as a radix value, as a backdoor way to get an unsigned print format, but it seems like a very low priority request to me, that I don't personally feel like arguing for it.
You're free to continue trying to convince me or others, but as I said, I don't anticipate that we would change the currently defined behavior.
Slightly as an aside, you could use the long integer support (firmware 7.0 or later) as a helper, if you wanted.
> i = -1: print (i and &hFFFFFFFF&).ToStr()
4294967295
adamkaz
Channel Surfer
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-04-2016
04:02 PM
Re: Casting Larger Numbers to String
I'd be wary about relying on functions introduced in version 7.0. Users with RokuTVs are still on 6.2 - Roku has not responded to my post about when they will be migrated to 7.0.