Guest User

Untitled

a guest
Mar 23rd, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. function ip(str) {
  2. var length = str.length;
  3. var ans = [];
  4. var stack = [];
  5. var step = 0;
  6. var lastStep = 0;
  7. var lastchar = ''
  8.  
  9. // 生成原始数组
  10. for (var i = 0; i < 32; i++) {
  11. ans[i] = 0;
  12. }
  13.  
  14. // 处理每一次相加
  15. function handle() {
  16. if (stack.length === 0) {
  17. if (lastchar === 'b') {
  18. ans[step] = 1;
  19. } else {
  20. ans[step] = 0;
  21. }
  22. step++;
  23. } else {
  24. var nStep = 0;
  25. stack.forEach(function(item, index) {
  26. if (index === 0) {
  27. nStep += item;
  28. }
  29. if (index === 1) {
  30. nStep += (10 * item)
  31. }
  32. });
  33. if (lastchar === 'b') {
  34. for (var i = step; i < step + nStep; i++) {
  35. ans[i] = 1;
  36. }
  37. } else {
  38. for (var i = step; i < step + nStep; i++) {
  39. ans[i] = 0;
  40. }
  41. }
  42. step += nStep;
  43. }
  44. }
  45.  
  46. for (var i = length - 1; i >= 0; i--) {
  47. // 每次处理一次变更
  48. if ((str[i] === 'a' || str[i] === 'b') && i != (length - 1)) {
  49. handle();
  50. stack = [];
  51. }
  52. if (str[i] === 'a' || str[i] === 'b') {
  53. lastchar = str[i];
  54. } else {
  55. stack.push(Number(str[i]));
  56. }
  57. }
  58. handle();
  59. console.log(ans.join(''));
  60. var ips = [];
  61.  
  62. // 把数组转换城字符输出
  63. for (var i = 0; i < 4; i++) {
  64. var temp = 0
  65. for (var j = 0; j < 8; j++) {
  66. if (ans[i * 8 + j] === 1) {
  67. temp += Math.pow(2, j);
  68. }
  69. }
  70. ips[i] = temp;
  71. }
  72. return ips[3] + '.' + ips[2] + '.' + ips[1] + '.' + ips[0];
  73. }
  74.  
  75. var ans = ip('7ab7ab7a2b6ab');
  76. console.log(ans);
  77. console.log(ans === '1.1.1.129');
  78.  
  79. var ans = ip('32a');
  80. console.log(ans);
  81.  
  82. var ans = ip('32b');
  83. console.log(ans);
  84.  
  85. var ans = ip('8b8a8b8a');
  86. console.log(ans);
  87.  
  88. var ans = ip('a7b8a8a7ab');
  89. console.log(ans);
  90. var ans = ip('aa6baa6baa6b8a');
  91. console.log(ans);
Add Comment
Please, Sign In to add comment