我正在尝试编写一个解密加密邮件的程序。加密的消息是一组非常长的数字" .296.294.255.268.313.278.311.270.290.305.322.252.276.286.301.305.264.301.251.269.274.311.304。 230.280.264.327.301.301.265.287.285.306.265.282.319.235.262.278.249.239.284.237.249.289.250。 282.240.256.287.303.310.314.242.302.289.268.315.264.293.261.298.310.242.253.299.278.272.333。 272.295.306.276.317.286.250.272.272.274.282.308.262.285.326.321.285.270.270.241.283.305.319。 246.263.311.299.295.315.263.304.279.286.286.299.282.285.289.298.277.292.296.282.267.245 ..... ECT&#34 ;. 消息的每个字符都被转换为三个不同的数字(例如,消息的第一个字符是< 230 .280 .264'第二个字符是' .327.301.265'等等)。 所以我试图使用javascript添加三个数字的组,然后将它们保存为自己的变量。谢谢
答案 0 :(得分:1)
假设msg
中包含该字符串,则会将其拆分并将三元组一起添加。
const [, triplets] = msg
.split('.')
.slice(1)
.map(v => +v)
.reduce(([count, list], val, i) => {
if ((i + 1) % 3) return [count + val, list];
return [val, list.concat(count)];
}, [0, []]);
答案 1 :(得分:1)
这取决于数据的传输方式。看起来您可以将数据作为字符串(或将其解析为字符串),然后使用split方法创建所有数字的数组。
var numbers = "234.345.456.567"
var arr = numbers.split(".")
然后,您将遍历数组,为每组三个
执行所需的操作var newArray[]
var i
for(i = 0; i < length; i += 3){
//Add values here
//Parse back to int
newArray.push("sum Value")
}
希望这与你所需要的一致。
答案 2 :(得分:0)
使用正则表达式匹配所有三个组,然后通过将字符串分割为map
并将3加在一起,将每个组.
与数字匹配:
const input = '296.294.255.268.313.278.311.270.290.305.322.252.276.286.301.305.264.301.251.269.274.311.304. 230.280.264.327.301.301.265.287.285.306.265.282.319.235.262.278.249.239.284.237.249.289.250. 282.240.256.287.303.310.314.242.302.289.268.315.264.293.261.298.310.242.253.299.278.272.333. 272.295.306.276.317.286.250.272.272.274.282.308.262.285.326.321.285.270.270.241.283.305.319. 246.263.311.299.295.315.263.304.279.286.286.299.282.285.289.298.277.292.296.282.267.245';
const groupsOfThree = input.match(/\d{3}\.\d{3}\.\d{3}\./g);
const sums = groupsOfThree.map((group) => {
const nums = group.split('.').map(Number);
return nums[0] + nums[1] + nums[2];
});
console.log(sums);
&#13;