Difference between revisions of "User:Cory Fimicoloud"

From Second Life Wiki
Jump to navigation Jump to search
m
Line 1: Line 1:
{{User:Cory Fimicoloud/hcard}}
{{User:Cory Fimicoloud/hcard}}
==My Functions==
===Text===
====String====
=====UTF8Len=====
Returns the UTF-8 byte count of the string passed to it.
<lsl>
integer UTF8Len(string fsString)
{
// Author: Cory Fimicoloud
// License: http://creativecommons.org/licenses/by-sa/3.0/us/
integer liLen = ~llStringLength(fsString);
string lsChar = "";
string lsEnc = "";
integer liByteLen = 0;
while (++liLen < 0)
{
lsEnc = llEscapeURL((lsChar = llGetSubString(fsString, liLen, liLen)));
if (lsChar != lsEnc)
liByteLen += llStringLength(lsEnc) / 3;
else
++liByteLen;
}
return liByteLen;
}
default
{
state_entry()
{
// 63 characters. Each of the characters uses 1 byte except for ¢ (2 bytes) and € (3 bytes). Which results in 66 bytes.
string lsString = "Can I have $10 and 7¢, please? I would prefer it in €'s though.";
llOwnerSay("'" + lsString + "' is " + (string)UTF8Len(lsString) + " bytes.");
}
}</lsl>
=====UTF8Split=====
Returns a list containing the string passed to it, split every fiSplit bytes.
<lsl>
list UTF8Split(string fsString, integer fiSplit)
{
// Author: Cory Fimicoloud
// License: http://creativecommons.org/licenses/by-sa/3.0/us/
string lsSplit = "";
list laSplit = [];
integer liLen = ~llStringLength(fsString);
string lsChar = "";
string lsEnc = "";
integer liByteLen = 0;
while (++liLen < 0)
{
lsChar = llGetSubString(fsString, liLen, liLen);
lsEnc = llEscapeURL(lsChar);
if (lsChar != lsEnc)
liByteLen += llStringLength(lsEnc) / 3;
else
++liByteLen;
if (liByteLen <= fiSplit)
lsSplit += lsChar;
else
{
laSplit += [lsSplit];
lsSplit = lsChar;
liByteLen = 1;
}
}
return laSplit + [lsSplit];
}
default
{
state_entry()
{
list laSplit = UTF8Split("Can I have $10 and 7¢, please? I would prefer it in €'s though.", 33);
llOwnerSay("\nUTF8Split\n==========\n\t0: " + llList2String(laSplit, 0) + "\n\t1: " + llList2String(laSplit, 1));
}
}</lsl>
==Miscellaneous==
==Miscellaneous==
===LSL/Mono Differences===
===LSL/Mono Differences===
Line 95: Line 20:
==See Also==
==See Also==
* [[User:Cory_Fimicoloud/SimIPScan|Simulator IP Scan]]
* [[User:Cory_Fimicoloud/SimIPScan|Simulator IP Scan]]
* [[User:Cory_Fimicoloud/LSLFunctions|LSL Functions]]
* {{Jira Reporter}}
* {{Jira Reporter}}



Revision as of 04:04, 25 January 2009

Profile
Born:
Sat 12th May 2007

Miscellaneous

LSL/Mono Differences

Results are from 1000 iterations and are in seconds.

VM Average Total
State Changing
Mono 0.010054 10.053950
LSL 0.000038 00.037993

See Also