I'm super curious, on what's the use-case for this? It's just not an area I've considered before...generally I've always referenced actions with the ID presented by REST, I can't say I paid as much attention to notice the Console was representing them differently...
That's some awesome math there by the way.
Another way to think of it, probably what's happening internally, is bitwise math.
2^24 = 16,777,216 = 1 left shift 24
2^24 * 7 = 117,440,512 = 7 left shift 24
So you might think of this as a 32-bit number, where the first 8 bits correspond to the "DSA ID" (00-, 01-, 02-, etc.) and the remaining 24 bits correspond to the "incrementing action ID from that specific DSA server".
So any action ID should be "DSA ID left shift 24 + Action ID"
Turns out, we can do this in Relevance, if it helps at all:
q: properties whose (it as string contains "shift")
A: right shift <integer> of <bit set>: bit set
A: left shift <integer> of <bit set>: bit set
T: 2.944 ms
I: plural property
q: left shift 24 of (7 as bits)
A: 111000000000000000000000000
T: 1.316 ms
I: singular bit set
q: "07-63558"
A: 07-63558
T: 1.259 ms
I: singular string
q: left shift 24 of (7 as bits) as integer
A: 117440512
T: 1.248 ms
I: singular integer
// What does the 'bit set' of the DSA ID '07' look like?
q: (left shift 24 of (preceding text of first "-" of it as integer as bits)) of "07-63558"
A: 111000000000000000000000000
T: 1.193 ms
I: singular bit set
// What is the 'integer' value of that DSA ID '07'?
q: ((left shift 24 of (preceding text of first "-" of it as integer as bits) as integer)) of "07-63558"
A: 117440512
T: 1.141 ms
I: singular integer
Console to ActionID:
q: ((left shift 24 of (preceding text of first "-" of it as integer as bits) ) as integer + following text of first "-" of it as integer) of "07-63558"
A: 117504070
T: 1.087 ms
I: singular integer
Or, the reverse: ActionID to Console Representation:
Starting from '117504070'
// To get the "Action ID of this DSA" part, I need to mask off the first 24 bits of the
// Starting from 'Action ID 117504070'
// To get the "DSA ID" part, I can right-shift 23 bits.
q: right shift 24 of (it as bits) of 117504070
A: 111
T: 1.026 ms
I: singular bit set
q: right shift 24 of (it as bits) of 117504070 as integer
A: 7
T: 0.877 ms
I: singular integer
// To get the "Action identifier from this DSA" I need to consider only the last 24 bits.
// What is the integer value of '24 bits where each bit is 1' ?
q: (concatenation of "1" of integers in (1, 23))
A: 11111111111111111111111
T: 0.726 ms
I: singular string
q: bit set (concatenation of "1" of integers in (1, 23)) as integer
A: 8388607
T: 0.596 ms
I: singular integer
// i.e. 0x7F FFFF
// What are is the value of the last 24 bits of 117504070 ? I.e. 117504070 BITWISE AND 8388607
q: (117504070 as bits * 8388607 as bits) as integer
A: 63558
T: 0.460 ms
I: singular integer
//Final Boss Form
q: (last 2 of ("00" & right shift 24 of (it as bits) as integer as string) & "-" & (it as bits * 8388607 as bits ) as integer as string ) of 117504070
A: 07-63558
T: 0.258 ms
I: singular string