LANG SELRCT

コードを書く場所についてはこちら

2018年2月2日金曜日

JavaScriptで10進数から16進数に変換する .toString(16)


10進数と16進数を相互変換してみる


10進数:
16進数:


10進数の右のテキストボックスに半角数字を入力すると
16進数が表示されます

10進数は0123456789の10文字の組み合わせで表現される
16進数は0123456789abcdefの16文字の組み合わせで表現される


10進数を16進数にする .toString(16)


コード.gs
function get_log() {
  var decimal = 15;
  var hexadecimal = decimal.toString(16);
  Logger.log(hexadecimal);
}
意訳
この機能がやること
10進数の数字を決めて
16進数にして
ログに出す






HTML Serviceで相互変換機能を作ってみる


コード.gs
function doGet() {
  return HtmlService.createHtmlOutputFromFile("index");
}
意訳
この機能がやること
指定したHTMLファイルを表示する




index.html
<!DOCTYPE html>
<html>
  <body>
    10進数:<input type="text" id="decimal"><br>
    16進数:<input type="text" id="hexadecimal">
    
    <script>
    document.getElementById("decimal").onkeyup = decimal_key_up;
    document.getElementById("hexadecimal").onkeyup = hexadecimal_key_up;
    
    function decimal_key_up(){
      var decimal = document.getElementById("decimal").value;
      var hexadecimal = parseInt(decimal, 10).toString(16);
      document.getElementById("hexadecimal").value = hexadecimal;
    }
    
    function hexadecimal_key_up(){
      var hexadecimal = document.getElementById("hexadecimal").value;
      var decimal = parseInt(hexadecimal, 16).toString(10);
      document.getElementById("decimal").value = decimal;
    }
    </script>
  </body>
</html>
意訳
これはHTML5文書です


10進数を入力するテキストボックスを置く
改行
16進数を入力するテキストボックスを置く


idがdecimalの要素でキーが上がったらdecimal_key_upを実行する
idがhexadecimalの要素でキーが上がったらhexadecimal_key_upを実行する

この機能がやること
idがdecimalの要素の値(文字列)を取得して
値を10進数にしてそれを16進数にして
idがhexadecimalの要素に入れる


この機能がやること
idがhexadecimalの要素の値(文字列)を取得して
値を16進数にして10進数にして
idがdecimalの要素に入れる






シートに書き出す


シートに10進数の数字を用意してそれらを16進数にしてみる



コード.gs
function get_hexadecimal() {
  var sh = SpreadsheetApp.getActiveSheet();
  var last_row = sh.getLastRow();
  var range = sh.getRange("A2:A" + last_row);
  var values = range.getValues();
  var array = [];
  for (var i = 0; i < values.length; i++) {
    var hexadecimal = parseInt(values[i]).toString(16);
    array.push([hexadecimal]);
  }
  var start_row = 2;
  var start_col = 2;
  set_values(array, start_row, start_col, sh, last_row);
}

function set_values(array, start_row, start_col, sh, last_row){
  var num_rows = array.length;
  var num_cols = array[0].length;
  var range = sh.getRange(start_row, start_col, num_rows, num_cols);
  range.setValues(array); 
}
意訳
この機能がやること
シートを取得して
データが入力されている最終行を取得して
A2からA列のデータが入っている最終行を指定して
値をすべて取得して
結果を入れる配列を用意して
値の数だけ以下を繰り返す
値をひとつずつ数値にしてから16進数にして
arrayに追加する

開始行を指定して
開始列を指定して
set_valuesにarrayとともshとlast_rowも渡す


この機能がやること
arrayの長さから入力する行数を取得して
arrayの0番目の長さから入力する列数を取得して
範囲を指定して
arrayの値を入力する



参考

Number.prototype.toString()
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Number/toString