Skip to content

Instantly share code, notes, and snippets.

@batako
Created September 11, 2012 08:28
Show Gist options
  • Save batako/3696883 to your computer and use it in GitHub Desktop.
Save batako/3696883 to your computer and use it in GitHub Desktop.
Facebookの投稿コメントを2進数に変換
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