我如何使text =整数

时间:2013-03-29 04:10:20

标签: javascript

我有一个问题,我一直试图解决好几天。 我想知道是否可以让文本变成整数。 所以我每次在textarea(“ALC”)加载时写入,然后在textarea(“MLC”)001上写入。最后还包括1-15到二进制文件 例如。加载#1将显示001 0 00001

<html>
<head>
<center><font size ="24"> Simple Assembler </font></center>
<script type="text/javascript">
    var Load = "001";
    var Store = "010";
    var Add = "011";
    var Sub = "100";
    var Equal = "101";
    var Jump = "110";
    var Halt = "111";
    var # = "1";


</script>
</head>
<body>

<form name="AssemblyLanguagecode" action="" method="">
<textarea Id="ALC" style="resize:none;width:35%;height:35%;margin-left:15%" value="">Insert Assembly Language Code</textarea>
<textarea Id="MLC" style="resize:none;width:35%;height:35%;" ReadOnly="True">Machine Language Code will be displayed here</textarea><br  />
<p align="center"><input type="button" value="Assemble" onclick="ALCtoMLC()";" /></p>
</form>


<script type= "text/javascript">

function ALCtoMLC() {   
    var x = document.getElementById("ALC").value;
    x = parseInt(x);
    var bin = x.toString(2);



document.getElementById("MLC").innerHTML = bin;
}

</script>

</body>
</html>

4 个答案:

答案 0 :(得分:2)

我想我明白你想做什么。您希望将键入“ALC”的内容用作值的键。在这种情况下,您希望使用javascript对象并将指令指定为键,将二进制指定给值。如

var instruction_set = {
    "Load" : "001",
    "Store" : "010",
    "Add" : "011",
    "Sub" : "100",
    "Equal" : "101",
    "Jump" : "110",
    "Halt" : "111"
}

function ALCtoMLC() {
    var x = document.getElementById("ALC").value;
    x = instruction_set[x];
}

答案 1 :(得分:0)

更新:

试试这个:

<html>
<head>
<center><font size ="24"> Simple Assembler </font></center>
<script type="text/javascript">
    var Load = "001";
    var Store = "010";
    var Add = "011";
    var Sub = "100";
    var Equal = "101";
    var Jump = "110";
    var Halt = "111";
    var # = "1";



</script>
</head>
<body>

<form name="AssemblyLanguagecode" action="" method="">
<textarea Id="ALC" style="resize:none;width:35%;height:35%;margin-left:15%" value="">Insert Assembly Language Code</textarea>
<textarea Id="MLC" style="resize:none;width:35%;height:35%;" ReadOnly="True">Machine Language Code will be displayed here</textarea><br  />
<p align="center"><input type="button" value="Assemble" onclick="ALCtoMLC();" /></p>
</form>


<script type= "text/javascript">
var Dict = { 'Load':"001",'Store':"010"}; //example Instruction set

function ALCtoMLC() {   
    var x = document.getElementById("ALC").value;
    var instrType = '';
    for (var instr in Dict){
        var ind = x.indexOf(instr);
        if( ind > -1){
            instrType = instrType + Dict[instr];
            x = x.replace(instr,'');
        }
    }
    console.log(instrType, "::", x);
    x = parseInt(x);
    var bin = x.toString(2);
    bin = instrType + bin; 
    document.getElementById("MLC").innerHTML = bin;
}

</script>

</body>
</html>

答案 2 :(得分:0)

我就是这样做的:

var opcodes = {
    Load:  1,
    Store: 2,
    Add:   3,
    Sub:   4,
    Equal: 5,
    Jump:  6,
    Halt:  7
};

var assemblyTextarea = document.querySelector("#assembly");
var machineTextarea = document.querySelector("#machine");

document.querySelector("#assemble").addEventListener("click", function () {
    var instruction = assemblyTextarea.value.split(" ");
    var operand =+ instruction[1].slice(1);
    var opcode = instruction[0];

    var code = opcodes[opcode] * 16 + operand;
    var bits = ("0000000" + code.toString(2)).slice(-8);

    machineTextarea.value = bits;
}, false);

请参阅此处的演示:http://jsfiddle.net/fs5mb/1/

输入格式应如下:Load #15

答案 3 :(得分:0)

让我们说你有办法获得代币。那你的功能应该是这样的

var tokens = getTokens( document.getElementById("ALC").value ) ;
var vocabulary = { "Load" : "001" , " ... " } ;
var output = []
var i = 0;
var tokensLength = tokens.length;
for ( ; i < tokensLength; i++){
     var token = tokens[i];
     if ( isNaN(token) && typeof(vocabulary[token]) != "undefined" ){
           output.push( vocabulary[token] );

     }else if ( !isNaN(token) ){
          output.push( Number(token).toString(2) );
     }else{
          console.log(["error : unknown token ", token]);
     }
}

document.getElementById("MLC").value = output.join(" "); 

我在问题中看到Load转换为0010而不是001,所以我只想修改词汇表。

说明:

  • 我假设您有办法将输入拆分为令牌。 (ALC语法对我来说仍然不清楚)。
  • 标记数组将包含,例如["Load","#","15", "Load","#","16"]等等。
  • 然后我循环使用代币。
  • 如果令牌是数字 - 我将其转换为二进制字符串。
  • 如果令牌可以通过词汇表翻译 - 我将其切换为二进制表示。
  • 否则我会打印错误。

注意:如果输出应填充“0” - 即使问题中未指定,我也会使用"0000".substring(n.length) + n