LlStringLength

De DigiWiki.

// assumptions: 
//    object name: LSLWiki
//    script name: _lslwiki
 
default
{
    state_entry()
    {
        string HowLongAmI = "123";
        integer strlen = llStringLength(HowLongAmI);
        llOwnerSay( "'" + HowLongAmI + "' has " +(string) strlen + " characters.");
        // The owner of object LSLWiki will hear 
        // LSLWiki: '123' has 3 characters.
    }
}

  • LSL-2 sees all strings as UTF8
  • LSL-Mono sees all string as UTF16
  • llStringLength gets the number of characters
  • Both UTF8 and UTF16 use multibyte characters
  • Some communication functions (i.e. llHTTPResponse) are limited by number of Bytes, and work with UTF8 strings
integer getStringBytes(string msg) {
    //Definitions:
    //msg == unescapable_chars + escapable_chars
    //bytes == unescapable_bytes + escapable_bytes
    //unescapable_bytes == unescapable_chars
 
    //s == unescapable_chars + (escapable_bytes * 3)
    string s = llEscapeURL(msg);//uses 3 characters per byte escaped.
 
    //remove 1 char from each escapable_byte's triplet.
    //t == unescapable_chars + (escapable_bytes * 2)
    string t = (string)llParseString2List(s,["%"],[]);
 
    //return == (unescapable_chars * 2 + escapable_bytes * 4) - (unescapable_chars + (escapable_bytes * 3))
    //return == unescapable_chars + escapable_bytes == unescapable_bytes + escapable_bytes
    //return == bytes
    return llStringLength(t) * 2 - llStringLength(s);
}
Outils personnels
  • Cette page a été consultée 469 fois.
donate
Google Ads