Text To Byte Conversion: Difference between revisions
Jump to navigation
Jump to search
| Line 26: | Line 26: | ||
integer i; | integer i; | ||
integer n = llGetListLength(bytes); | integer n = llGetListLength(bytes); | ||
for(i = 0; i | for(i = 0; i < n; i += 3) | ||
{ | { | ||
integer | integer dword = | ||
(llList2Integer(bytes, i) & 0xFF) << 24 | |||
| (llList2Integer(bytes, i + 1) & 0xFF) << 16 | |||
| (llList2Integer(bytes, i + 2) & 0xFF) << 8; | |||
text += llGetSubString(llIntegerToBase64(dword), 0, 3); | |||
text += llGetSubString( | |||
} | } | ||
return llBase64ToString(text); | return llBase64ToString(text); | ||
Revision as of 02:29, 5 January 2008
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Here's a function to pass a string of text and receive a list of bytes. A second function is provided to work in reverse. These methods are especially useful for working with encryption.
Text2Bytes.lsl
<lsl> string base64characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; list text2bytes(string text) {
string base64 = llStringToBase64(text);
list bytes;
integer i;
integer n = llStringLength(base64);
for(i = 0; i < n; i += 4)
{
integer dword = llBase64ToInteger(llGetSubString(base64, i, i + 3) + "AA") >> 8;
bytes += (dword & 0x00FF0000) >> 16;
bytes += (dword & 0x0000FF00) >> 8;
bytes += (dword & 0x000000FF) >> 0;
}
return bytes;
} string bytes2text(list bytes) {
string text;
integer i;
integer n = llGetListLength(bytes);
for(i = 0; i < n; i += 3)
{
integer dword =
(llList2Integer(bytes, i) & 0xFF) << 24
| (llList2Integer(bytes, i + 1) & 0xFF) << 16
| (llList2Integer(bytes, i + 2) & 0xFF) << 8;
text += llGetSubString(llIntegerToBase64(dword), 0, 3);
}
return llBase64ToString(text);
}
default {
state_entry()
{
list bytes = text2bytes("Hello, Avatar!");
llSay(0, llList2CSV(bytes));
string text = bytes2text(bytes);
llSay(0, text);
}
touch_start(integer total_number)
{
list bytes = text2bytes("Touched.");
llSay(0, llList2CSV(bytes));
string text = bytes2text(bytes);
llSay(0, text);
}
}
</lsl>