Macro/投稿/228

http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F228


Top > Macro > 投稿 > 228

Base64デコードして挿入

  • ページ: Macro/投稿
  • 作者: みけCAT?
  • カテゴリー: js
  • 投稿日: 2014-02-10 (月) 19:06:43

メッセージ

標準機能に「Base64デコードして保存」がありますが、 データの確認をするためにわざわざファイルに保存し、 バイナリエディタを開くのは面倒くさいことがあるので、 デコードした結果を直接出力するようにしてみました。

出力を選択箇所に上書きするのではなくアウトプットウィンドウに表示したい場合は、 最後の方のInsTextをコメントアウトし、TraceOutをコメントアウト解除してください。

filedecodeBase64AndDisp.js
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
// Base64デコードして挿入
 
function int2hex(n,digits) {
    var hexchars="0123456789ABCDEF";
    var ret="";
    while(n>0 || digits>0) {
        ret=hexchars.charAt(n&0xf)+ret;
        n>>=4;
        digits--;
    }
    if(ret=="")return "0";
    return ret;
}
 
var input=GetSelectedString();
if(input.length>0) {
    var b64chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    var outValue=new Array();
    var buf=0;
    var stat=0;
    for(var i=0;i<input.length;i++) {
        var now=b64chars.indexOf(input.charAt(i));
        if(now>=0) {
            switch(stat) {
                case 0:
                    buf=now<<2;
                    stat=1;
                    break;
                case 1:
                    outValue.push(buf|((now>>4)&0x03));
                    buf=(now<<4)&0xf0;
                    stat=2;
                    break;
                case 2:
                    outValue.push(buf|((now>>2)&0x0f));
                    buf=(now<<6)&0xc0;
                    stat=3;
                    break;
                case 3:
                    outValue.push(buf|(now&0x3f));
                    buf=0;
                    stat=0;
                    break;
            }
        }
    }
    var ln="\r\n";
    if(GetLineCode()==1)ln="\r";
    if(GetLineCode()==2)ln="\n";
    var posDigit=int2hex(outValue.length,0).length;
    var ret=ln;
    var charCode=GetCharCode();
    // ヘッダの作成
    for(var i=0;i<posDigit;i++)ret+=" ";
    ret+=" |";
    for(var i=0;i<16;i++)ret+="  "+int2hex(i,1);
    ret+=" ";
    for(var i=0;i<16;i++)ret+=int2hex(i,1);
    ret+=ln;
    for(var i=0;i<posDigit;i++)ret+="-";
    ret+="-+";
    for(var i=0;i<16;i++)ret+="---";
    ret+="-";
    for(var i=0;i<16;i++)ret+="-";
    ret+=ln;
    // データの書き出し
    for(var i=0;i<outValue.length;i+=16) {
        ret+=int2hex(i,posDigit)+" |";
        for(var j=0;j<16;j++) {
            ret+=" ";
            if(i+j<outValue.length) {
                ret+=int2hex(outValue[i+j],2);
            } else {
                ret+="  ";
            }
        }
        ret+=" ";
        for(var j=0;j<16;j++) {
            if(i+j<outValue.length) {
                var nowCode=outValue[i+j];
                if(0x20<=nowCode && nowCode<=0x7E) {
                    ret+=String.fromCharCode(nowCode);
                } else if(0xA1<=nowCode && nowCode<=0xDF) {
                    ret+="。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚".charAt(nowCode-0xA1);
                } else {
                    ret+=".";
                }
            }
        }
        ret+=ln;
    }
    InsText(ret);
    //TraceOut(ret,0);
}


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

添付ファイル: filedecodeBase64AndDisp.js 146件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2014-02-10 (月) 19:08:27 (1681d)