ビット列を整数値に変換する

over view

整数型の変数を二進数として判断し、十進数に変換するユーザ関数。尚、擬似二進数は当然「1と0」のみで表すべきであり、それ以外の数値であってもエラーは返さない 1) ため注意が必要である。

integer bit(integer num);
  • integer num … 擬似二進数

example

  1. ビット列を自然数に変換する。
    bit(111);
    // -> 7
  2. LSL で扱える整数の最大値は 2,147,483,647 であり 10 桁。従って、このユーザ関数で扱えるのは10ビットまで。
    bit(1111111111);
    // -> 1023
  3. uuRefer2Bit と連携し、ビット演算子の勉強に。
    uuRefer2Bit(bit(1010)|bit(1001));
    // -> 0000 0000 0000 0000 0000 0000 0000 1011

code

integer bit(integer num){
    string bits = (string)num;
    integer i;
    integer end = llStringLength(bits);
    integer two = 1;
    integer result;
    for (i=0; i<end; i++){
        result += (integer)(llGetSubString(bits, -i-1, -i-1)) * two;
        two *= 2;
    }
    return result;
}
1) あらぬ数値が返る
最終更新: 2010年11月25日 03 : 40 by arz Nitely
http://arzNitely.com/lsl/user_function/bit/index.html

Copyright 2007-2010 ©arzNitely.com all right reserved

www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0