Difference between revisions of "LlBase64ToInteger"
Jump to navigation
Jump to search
All Issues ~ Search JIRA for related Bugs
Frionil Fang (talk | contribs) (the return is always predictable: if there's fewer than 6 characters, any incomplete bytes of the integer become 0 (e.g. 5 chars->30 bits->only 3 complete bytes with low byte set to 0)) |
|||
(11 intermediate revisions by 7 users not shown) | |||
Line 2: | Line 2: | ||
|func_id=281|func_sleep=0.0|func_energy=10.0 | |func_id=281|func_sleep=0.0|func_energy=10.0 | ||
|func=llBase64ToInteger|sort=Base64ToInteger | |func=llBase64ToInteger|sort=Base64ToInteger | ||
|return_type=integer|p1_type=string|p1_name=str | |return_type=integer|p1_type=string|p1_name=str|p1_desc=Base64 string | ||
|return_text=that is '''str''' {{ | |return_text=that is '''str''' {{LSLGC|Base64}} decoded as a big endian integer. | ||
|spec | |spec | ||
|caveats=*If | |caveats=*If {{LSLPT|str}} contains fewer than 6 characters, any incomplete least-significant bytes of the integer are set to 0. | ||
** | **For example, the Base64 value <code>"qqqqqq=="</code> corresponds to the hexadecimal value <code>0xAAAAAAAA</code>. If the padding "=" characters and the last "q" are dropped, there are 5*6=30 bits remaining and those can form only 3 full bytes (24 bits). The result is <code>0xAAAAAA00</code>. | ||
**The Base64 value <code>"qqqq"</code> has 4*6=24 bits available, which is enough for the same 3 full bytes. The result is also <code>0xAAAAAA00</code>. | |||
**Similarly, 3-character Base64 has 18 bits, enough for 2 bytes, and 2-character Base64 has 12 bits, enough for one byte. | |||
**Finally, single-character Base64 has only 6 bits and thus no complete bytes, and the result is always zero. | |||
*Returns zero if {{LSLPT|str}} is longer than 8 characters. | |||
|constants | |constants | ||
|examples | |examples=<source lang="lsl2"> | ||
integer value = llBase64ToInteger("3q0AAA=="); | |||
// writes out -559087616 | |||
llOwnerSay((string)value); | |||
</source> | |||
|helpers | |helpers | ||
|also_functions= | |also_functions={{LSL DefineRow||{{LSLG|llIntegerToBase64}}|}} | ||
|also_events | |also_events | ||
|also_tests | |also_tests | ||
|also_articles | |also_articles={{LSL DefineRow||{{LSLGC|Base64}}|}} | ||
|notes | |notes | ||
|permission | |permission | ||
|negative_index | |negative_index | ||
|cat1=Base64 | |cat1=Base64 | ||
|cat2 | |cat2=Encoding | ||
|cat3 | |cat3 | ||
|cat4 | |cat4 | ||
}} | }} |
Latest revision as of 10:30, 11 October 2023
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: integer llBase64ToInteger( string str );281 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
Returns an integer that is str Base64 decoded as a big endian integer.
• string | str | – | Base64 string |
Caveats
- If str contains fewer than 6 characters, any incomplete least-significant bytes of the integer are set to 0.
- For example, the Base64 value
"qqqqqq=="
corresponds to the hexadecimal value0xAAAAAAAA
. If the padding "=" characters and the last "q" are dropped, there are 5*6=30 bits remaining and those can form only 3 full bytes (24 bits). The result is0xAAAAAA00
. - The Base64 value
"qqqq"
has 4*6=24 bits available, which is enough for the same 3 full bytes. The result is also0xAAAAAA00
. - Similarly, 3-character Base64 has 18 bits, enough for 2 bytes, and 2-character Base64 has 12 bits, enough for one byte.
- Finally, single-character Base64 has only 6 bits and thus no complete bytes, and the result is always zero.
- For example, the Base64 value
- Returns zero if str is longer than 8 characters.
Examples
integer value = llBase64ToInteger("3q0AAA==");
// writes out -559087616
llOwnerSay((string)value);