Created
September 11, 2012 08:28
-
-
Save batako/3696883 to your computer and use it in GitHub Desktop.
Facebookの投稿コメントを2進数に変換
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
javascript:(function(){ | |
/* 読み込み時に実行 */ | |
(function(){ | |
/** | |
* convertType = 変換方向タイプ | |
* true : 文字列を2進数に変換 | |
* false : 2進数を文字列に変換 | |
*/ | |
var convertType = true; | |
/* 変換対象のオブジェクト */ | |
var tage_obj = document.getElementsByTagName('textarea'); | |
/* 入力されているテキストエリアを検索 */ | |
for(var i=0,N=tage_obj.length;i<N;i++){ | |
var obj = tage_obj[i]; | |
if(obj.value && obj.value != obj.placeholder){ | |
/* 文字列を2進数に変換 */ | |
if(convertType) obj.value = convert_str_to_binary(obj.value); | |
/* 2進数を文字列に変換 */ | |
else{ | |
var afterStr = convert_binary_to_str(obj.value); | |
if(afterStr) obj.value = afterStr; | |
} | |
} | |
} | |
})(); | |
/** | |
* [関数名] convert_str_to_binary | |
* [機 能] 文字列を二進数に変換 | |
* [説 明] 1文字を16bitとして変換 | |
* | |
* @param string beforeStr 文字列 | |
* @return string afterStr 二進数 | |
*/ | |
function convert_str_to_binary(beforeStr){ | |
var afterStr = ''; | |
for(var i=0; i < beforeStr.length; i++){ | |
afterStr += ZeroFormat(16, (beforeStr.charCodeAt(i)).toString(2)); | |
} | |
return afterStr; | |
} | |
/** | |
* [関数名] convert_binary_to_str | |
* [機 能] 二進数を文字列に変換 | |
* [説 明] 1文字を16bitとして変換 | |
* | |
* @param string beforeStr 二進数 | |
* @return string afterStr 文字列 | |
*/ | |
function convert_binary_to_str(beforeStr){ | |
beforeStr = toHankakuNum(beforeStr.replace(/\r\n/g,'').replace(/\n/g,'').replace(/\s| /g,'')); | |
if ( !beforeStr.match(/^[01]+$/) || beforeStr.length % 16 != 0){ | |
/* 不正な文字列なため変換できません */ | |
return; | |
} | |
var afterStr = ''; | |
for(var i=0; i < beforeStr.length / 16; i++){ | |
var startNum = i * 16; | |
var endNum = startNum + 16; | |
var word = beforeStr.slice(startNum, endNum); | |
afterStr += String.fromCharCode(parseInt(word,2)); | |
} | |
return afterStr; | |
} | |
/** | |
* [関数名] ZeroFormat | |
* [機 能] ゼロ埋め | |
* [説 明] 数値が指定した桁数になるまで数値の先頭をゼロで埋める | |
* | |
* @param integer num 数値 | |
* @param integer max 桁数 | |
* @return integer tmp ゼロ埋め後の数値 | |
*/ | |
function ZeroFormat(max, num){ | |
var tmp=''+num; | |
while(tmp.length<max){ | |
tmp='0'+tmp; | |
} | |
return tmp; | |
} | |
/** | |
* [関数名] toHankakuNum | |
* [機 能] 全角数字を半角数字に変換 | |
* | |
* @param string beforeStr 変換対象の数値 | |
* @return string afterStr ゼロ埋め後の数値 | |
*/ | |
function toHankakuNum(beforeStr){ | |
var han = '0123456789'; | |
var zen = '0123456789'; | |
var afterStr = ''; | |
for (i=0; i<beforeStr.length; i++){ | |
c = beforeStr.charAt(i); | |
n = zen.indexOf(c,0); | |
if (n >= 0) c = han.charAt(n); | |
afterStr += c; | |
} | |
return afterStr; | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment