提交 3d67690f 编写于 作者: B baiy 提交者: ninecents

#64 fix

上级 2549b063
{
"name": "c-tool",
"version": "1.7.0",
"version": "1.7.5",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
......@@ -2136,11 +2136,18 @@
"dev": true
},
"axios": {
"version": "0.21.1",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
"integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"requires": {
"follow-redirects": "^1.10.0"
"follow-redirects": "^1.14.0"
},
"dependencies": {
"follow-redirects": {
"version": "1.14.3",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.3.tgz",
"integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw=="
}
}
},
"babel-code-frame": {
......@@ -3668,9 +3675,9 @@
}
},
"cronstrue": {
"version": "1.114.0",
"resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-1.114.0.tgz",
"integrity": "sha512-j1JuBHTJKKX41NUJVHmWn2ZYHnLipsIoq7bAZVeVzehA9+rmG6v9NgMiMa0KiiFzozihgt4yGNe5aMVc/IoYLg=="
"version": "1.117.0",
"resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-1.117.0.tgz",
"integrity": "sha512-XeRPOHNnkitGDqiLj3V6XJgn/UbrRSaWdVrDjV/IBt2cT+SRPeURiTt6Fbm16liCp78+XFklwuwWpPzPBg08NQ=="
},
"cross-spawn": {
"version": "6.0.5",
......@@ -5388,7 +5395,8 @@
"follow-redirects": {
"version": "1.13.3",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz",
"integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA=="
"integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==",
"dev": true
},
"for-in": {
"version": "1.0.2",
......@@ -9517,11 +9525,6 @@
"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
"dev": true
},
"radix.js": {
"version": "0.0.1",
"resolved": "https://registry.npm.taobao.org/radix.js/download/radix.js-0.0.1.tgz",
"integrity": "sha1-rvAZaRF+YgL4cZcJX95z+7MQ8C8="
},
"randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
......
{
"name": "c-tool",
"version": "1.7.4",
"version": "1.7.5",
"private": true,
"scripts": {
"serve": "vue-cli-service serve --port 8081",
......@@ -8,11 +8,11 @@
"lint": "vue-cli-service lint"
},
"dependencies": {
"axios": "^0.21.1",
"axios": "^0.21.4",
"babel-runtime": "^6.26.0",
"code-formatter": "0.0.1",
"cron-parser": "^2.16.3",
"cronstrue": "^1.114.0",
"cronstrue": "^1.117.0",
"crypto-js": "^3.3.0",
"diff": "^4.0.2",
"file": "^0.2.2",
......@@ -34,7 +34,6 @@
"qrcode": "^1.4.4",
"qrcode-parser": "^1.2.0",
"query-string": "^6.13.7",
"radix.js": "0.0.1",
"serialize-php": "^1.1.2",
"sm-crypto": "^0.1.4",
"system": "^2.0.1",
......
<template>
<div style="padding: 0 70px">
<option-block>
<Input v-model="current.input" :placeholder="$t('decimalConvert_input_placeholder')">
<div slot="prepend" style="width: 70px"><strong>{{ $t('decimalConvert_input') }}</strong></div>
<Input v-model="current.input" placeholder="请输入待转换数字">
<div slot="prepend" style="width: 70px"><strong>转换数字</strong></div>
<Select v-model="current.decimal" slot="append" style="width:100px">
<OptionGroup :label="$t('decimalConvert_input_type_common')">
<Option v-for="v in type.common" :value="v" :key="v">{{ $t('decimalConvert_base',[v]) }}</Option>
<OptionGroup :label="type.common.name">
<Option v-for="v in type.common.list" :value="v" :key="v">{{ v }} 进制</Option>
</OptionGroup>
<OptionGroup :label="$t('decimalConvert_input_type_other')">
<Option v-for="v in type.other" :value="v" :key="v">{{ $t('decimalConvert_base',[v]) }}</Option>
<OptionGroup :label="type.other.name">
<Option v-for="v in type.other.list" :value="v" :key="v">{{ v }} 进制</Option>
</OptionGroup>
</Select>
</Input>
</option-block>
<option-block v-for="n in [1,2,3,4,5,6]" :key="n">
<Input v-model="current['resultOutput'+n]" readonly>
<div slot="prepend" style="width: 70px">{{ $t('decimalConvert_result',[n]) }}</div>
<div slot="prepend" style="width: 70px">转换结果{{ n }}</div>
<Select slot="append" v-model="current['resultDecimal'+n]" style="width:100px">
<OptionGroup :label="$t('decimalConvert_input_type_common')">
<Option v-for="v in type.common" :value="v" :key="v">{{ $t('decimalConvert_base',[v]) }}</Option>
<OptionGroup :label="type.common.name">
<Option v-for="v in type.common.list" :value="v" :key="v">{{ v }} 进制</Option>
</OptionGroup>
<OptionGroup :label="$t('decimalConvert_input_type_other')">
<Option v-for="v in type.other" :value="v" :key="v">{{ $t('decimalConvert_base',[v]) }}</Option>
<OptionGroup :label="type.other.name">
<Option v-for="v in type.other.list" :value="v" :key="v">{{ v }} 进制</Option>
</OptionGroup>
</Select>
</Input>
</option-block>
<option-block>
<Input v-model="current.alphabet">
<div slot="prepend">{{ $t('decimalConvert_alphabet') }}</div>
<Button slot="append" @click="current.alphabet=alphabet" :disabled="current.alphabet===alphabet">
{{ $t('decimalConvert_reset') }}
<div slot="prepend" style="width: 70px">64位字母表</div>
<Button slot="append" @click="current.alphabet=alphabet" :disabled="current.alphabet===alphabet">恢复默认
</Button>
</Input>
</option-block>
......@@ -42,12 +41,12 @@ import Radix from './library/radix.js'
const alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_@";
export default {
created() {
this.$initToolData('input')
this.current = Object.assign(this.current, this.$getToolData("input"))
},
watch: {
convert: function (val) {
if (val.alphabet.length !== 64) {
return this.$Message.error(this.$t('decimalConvert_alphabet_length_error').toString());
return this.$Message.error("转换字母表必须是64位长度");
}
if (!val.input) {
return;
......@@ -75,11 +74,17 @@ export default {
},
type() {
let type = {
common: [2, 8, 10, 16],
other: []
common: {
name: "常用进制",
list: [2, 8, 10, 16]
},
other: {
name: "其他进制",
list: []
}
}
for (let i = 2; i <= 64; i++) {
type.common.includes(i) || type.other.push(i);
type.common.list.includes(i) || type.other.list.push(i);
}
return type
}
......
// ASCII MAP
import Radix from "radix.js";
import Radix from "./radix.js";
const ASCII_MAP = ['NUL', 'SOH', 'STX', 'ETX', 'EOT', 'ENQ', 'ACK', 'BEL', 'BS', 'TAB', 'LF', 'VT', 'FF', 'CR', 'SO', 'SI',
'DLE', 'DC1', 'DC2', 'DC3', 'DC4', 'NAK', 'SYN', 'ETB', 'CAN', 'EM', 'SUB', 'ESC', 'FS', 'GS', 'RS', 'US',
......@@ -117,4 +117,4 @@ export default {
Ascii,
ascii_map: ASCII_MAP,
ascii_hidden: ASCII_HIDDEN,
}
\ No newline at end of file
}
import BigNumber from "bignumber.js";
/**
* Copyright (c) 2017 hustcc
* License: MIT
* GitHub: https://github.com/hustcc/radix.js
**/
class Radix {
/**
* 构造方法
* @param formatter
*/
constructor(formatter = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_@') {
BigNumber.config({ALPHABET: formatter})
this.formatter = formatter;
}
convent(base, source, target) {
let sourceNum = new BigNumber(base, source);
return sourceNum.toString(target);
}
/**
* 10 进制 m 转 N 进制
* @param m 被转的数字
* @param n 被转的进制数
* @returns {*}
*/
v10toN = (m, n) => {
m = String(m).replace(/ /gi, ''); // 替换 empty
if (m === '') return '';
let a = this.formatter.substr(0, 10);
let b = `${a}.`; // 正则字符
if (m.replace(new RegExp(`[${b}]`, 'gi'), '') !== '') {
// 不是有效的进制数
return '';
}
m = m.split('.'); // 将小数分割开
if (m.length > 2) return ''; // 不是有效的进制数
a = this.formatter.substr(0, n);
let t;
let d;
// 如果是整数
if (m.length === 1) {
m = m[0];
t = '';
while (m !== 0) {
b = m % n;
t = a.charAt(b) + t;
m = (m - b) / n;
}
return t;
}
// 如果是小数
let m0 = m[0]; // 整数部分
t = ''; // 整数部分的进制数
while (m0 !== 0) {
b = m0 % n;
t = a.charAt(b) + t;
m0 = (m0 - b) / n;
}
// 小数点后面部分
let cnt = 18;// 最多计算八位小数
let m1 = m[1];
m1 = parseFloat(`0.${m1}`);
d = ''; // 小数部分的进制数
b = 0;
while (m1 !== 0 && cnt > 0) {
m1 *= n;
b = parseInt(m1, 10);
d += a.charAt(b);
m1 -= b;
cnt -= 1;
}
return `${t}.${d}`;
};
/**
* N 进制数m转 10 进制
* @param m 被转的数字
* @param n 被转的进制数
* @returns {*}
*/
vNto10 = (m, n) => {
m = String(m).replace(/ /gi, '');
if (m === '') return '';
const a = this.formatter.substr(0, n);
const b = `${a}.`;
if (m.replace(new RegExp(`[${b}]`, 'gi'), '') !== '') {
return '';
}
m = m.split('.');
if (m.length > 2) return '';
let t;
let d;
let c;
// 为整数
if (m.length === 1) {
m = m[0];
t = 0;
c = 1;
for (let x = m.length - 1; x > -1; x -= 1) {
t += c * (a.indexOf(m.charAt(x)));
c *= n;
}
return t;
}
// 小数
// 整数部分的处理
const m0 = m[0];
t = 0;
c = 1;
for (let x = m0.length - 1; x > -1; x -= 1) {
t += c * (a.indexOf(m0.charAt(x)));
c *= n;
}
// 小数部分的处理
const m1 = m[1];
d = 0;
c = 1 / n;
for (let x = 0; x < m1.length; x += 1) {
d += c * (a.indexOf(m1.charAt(x)));
c /= n;
}
return t + d;
};
/**
* n 进制数 x 转 m 进制
* @param x
* @param n
* @param m
* @returns {*}
*/
vNtoM = (x, n, m) => {
// 首先将 m 转成 10 进制数
const a = this.vNto10(x, n * 1);
if (a === '') return '';
// 然后将其转为 M 进制数
return this.v10toN(a, m);
};
convent = (radixNumber, currentRadix = 10, targetRadix = 10) =>
this.vNtoM(radixNumber, currentRadix, targetRadix);
}
export default Radix
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册