Text To Byte Conversion
From Second Life Wiki
| LSL Portal | | | Functions | | | Events | | | Types | | | Operators | | | Constants | | | Flow Control | | | Script 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
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); } }

