2進数を10進数に変換する次のJavaSciptコードを作成しました。
(function bin_dec(num) {
var x = num;
var result = 0;
for (var i = 0; i < x.length; i++) {
result += eval(x[x.length - i] * 2^i);
}
return result;
})()
このコードをコマンドラインから実行できるようにしたいと思います。ファイル名はconverter.jsで、ファイルと同じディレクトリでコマンドプロンプトウィンドウを実行しています。関数の引数として01001100
を使用してこのコードを実行しようとしています。私の試みは次のとおりです。
$ converter.js 01001100
そして
$ converter.js -01001100
そして
$ converter.js bin_dec(01001100)
しかし、残念ながら、これらはどちらも機能しません。誰かが私の間違いを指摘してもらえますか?前もって感謝します。
1) Node.js をまだインストールしていない場合はインストールします。
2)converter.js
このようなファイル:
function bin_dec(num) {
return parseInt(num, 2);
}
console.log(bin_dec(process.argv[2]));
3)スクリプトがあるフォルダーで新しいコマンドプロンプトを開き、実行します
$ node converter.js 01001100
Nodejsでは、cmdからjavascriptを実行しようとしているため、既にインストールされていると仮定して、コマンドラインで渡される引数を取得するためにprocess.argv
配列を参照する必要があります。
したがって、コードは次のようになります。
(function bin_dec(num) {
var x = num;
var result = 0;
for (var i = 0; i < x.length; i++) {
result += eval(x[x.length - i] * 2^i);
}
return result;
})(process.argv[2])
関数に渡されるprocess.argv[2]
に注意してください。これにより、関数内の最初の引数がnum
変数として使用可能になります。
画面にメッセージを表示したい場合、returnステートメントはメッセージを出力しないため、console.log
をどこかに追加することもできます。
Windows上で実行していると仮定すると、次のように呼び出すことができます。
(function bin_dec() {
var x = WScript.arguments(0);
var result = 0;
for (var i = 0; i < x.length; i++) {
result += eval(x[x.length - i] * 2^i);
}
return result;
})()
関数に渡されるすべてのパラメーターはWScript.arguments
に保存されます。
ただし、これはreturn
値をコマンドプロンプトに出力しないため、次の.js
ファイルでテストすることをお勧めします。
(function ShowAlert() {
var x = WScript.arguments(0);
WScript.ECho(x);
})()
詳細については、次のリンクを参照してください。
console
やreturn
ステートメントのような基本的な関数はCLIでは機能しないことを知っておく必要があります。
Windowsを使用している場合は、'WScript.echo'
に似たconsole.log
を使用し、ファイルの実行中に次のようにしてください。
Cscript.exe yourpath input_params
たとえばCscript.exe converter.js 01001100
だからあなたのコードは
(function bin_dec() {
var x = WScript.arguments(0);
var result = 0;
for (var i = 0; i < x.length; i++) {
result += eval(x[x.length - i] * 2^i);
}
WScript.echo(result);
})();
実行するには
Cscript.exe converter.js 01001100
これがお役に立てば幸いです! CLIメソッドの詳細については、次のリンクを参照してください
https://msdn.Microsoft.com/en-us/library/2795740w(v = vs.84).aspx