我有以下代码:
<DOCTYPE HTML>
<html>
<body>
<script type="text/javascript">
//Chat Encoder
//Made by Hducke aka Hunter Ducker
//VARS
var userInputA = "";
var userInputB = "";
var result = userInputB.split("");
//FUNCTIONS
var encodeMessage = function(){
var output = "";
userInputB = prompt("Type your message here:", "PLEASE TYPE YOUR MESSAGE IN LOWER CASE!");
for(var i = 0; i <= result.length; i++){
switch(result[i]){
case("a"):
result[i] = "1";
break;
case("b"):
result[i] = "2";
break;
case("c"):
result[i] = "3";
break;
}
var tempStr = "";
result[i] + tempStr;
}
return tempStr;
}
var decodeMessage = function(){
}
var promptUser = function(){
var tempBool = true;
while(tempBool){
userInputA = prompt("Type '1' to encode a message and '2' to decode a message!", "Type '1' or '2' here.");
switch(userInputA){
case("1"):
encodeMessage();
tempBool = false;
break;
case("2"):
decodeMessage();
tempBool = false;
break;
default:
alert("Try again. Please type a '1' or a '2'.");
}
}
}
var printMessage = function(){
alert(encodeMessage);
}
//LOGIC
promptUser();
printMessage();
</script>
</body>
</html>
信息:它的方式是用户输入userInputB
并将其解析为单独的字符。然后它将字符设置为不同的字符(欺骗字符)。然后它将字符串输出给用户。我的目标是让您可以在其中输入消息I love this website!
并将其转换为1 2324 5654 7503947
。然后另一个用户可以输入编码消息,decodeMessage
函数将解码消息并将其输出给用户。
第一期:它目前无法正常工作。*
*编辑:现在我在修复result[i]
后运行代码。
Output I Get Now
第二个问题:我该怎么做(IE。有更好的方法吗?)
任何提示都可以提供帮助。我有点像javascript的菜鸟。谢谢!
答案 0 :(得分:0)
<强>更新强>
我已经使用编码和解码过程的示例场景更新了http://jsfiddle.net/ntyt4/5/。它应该足以让你开始。
更简单的方法是使用带有键及其翻译值的字典。您可以将其存储在对象文字中:
var translation = {
"a": 1,
"b": 2,
"c": 3,
"d": "A"
};
我已经添加了一个jsfiddle来向您展示一个示例。只需将文本框值更改为一个值即可查看翻译。
但要记住的一件事是,您必须添加需要转换为对象文字的每个字符。例如,“a”不会为您翻译大写版本“A”,因为它是一个不同的字符。
答案 1 :(得分:0)
第一个问题是您的输入;当用户输入提示时,result
不会更新。
function encodeMessage() {
var output = '';
userInputB = prompt(...);
result = userInputB.split('');
...
}
第二个问题是编码本身。而不是使用巨型switch
,创建一个算法来执行编码。在您的情况下,您可以按照自然顺序简单地将字符1:1映射到数字。
您是否知道您的计算机将这些字母存储为数字? 'a'
为97,'b'
为98等,因此您只需从字符中减去96即可得到a = 1,b = 2等。
但是,一旦达到'j'
,这会给您的解码器带来问题。 “java”将变成“101221”,如果您只是执行编码器的反向操作,您将最终得到“a`abba”。
一种选择是返回编码方案和ASCII table。 '1'
是角色49;也许你可以从你的角色中减去48?然后,'a'
将成为'1'
(与1
没有太大区别),依此类推。 'j'
变为':'
,如果您编码“java”,则会获得“:1F1”。
一旦你这样做,编码方案的反向将成为你的解码器。迭代编码的字符串,添加48而不是减去它。
答案 2 :(得分:0)
我不太了解javascript,但你有三个选择:
使用两个Vector 来映射字符 如果要包含简单字符,则需要25(a-z)+25(A-Z)+9(0-9)= 59转换。 你可以用一个算法来做到这一点,如果在第一个向量中找到一个字母,例如在索引“6”,则从第二个向量中的相应位置取值。
解码方法相同,只取第二个向量并将其转换为第一个向量的等效值。
ASCII表
以整数形式输入的字母'0'为48。
从48-57你有数字,在65-90范围内你有上角焦点,在97-122范围内你有较低焦点。如果您尝试子轨道,例如两个文本在一个简单的系统中编码。
MD5 Algoritm
您可以使用/创建一个生成文本md5哈希值的函数,例如md5中的“encoding”为“84bea1f0fd2ce16f7e562a9f06ef03d3”。如果你想使用encript系统来创建一个区域,这是更好的方法。