update at 2019-09-19 16:45:45 by ehlxr
This commit is contained in:
parent
15797d1823
commit
c625787931
1
.gitignore
vendored
1
.gitignore
vendored
@ -16,3 +16,4 @@ hc*
|
|||||||
hex-convert
|
hex-convert
|
||||||
.idea
|
.idea
|
||||||
dist
|
dist
|
||||||
|
.vscode
|
@ -1,13 +1,11 @@
|
|||||||
<h1>转换十进制</h1>
|
<h1>转换进制</h1>
|
||||||
<form action="d" method="post">
|
<form action="s" method="post">
|
||||||
<input type="text" name="scale" onkeyup="this.value=this.value.replace(/\D/g,'')" placeholder="进制数"/><br>
|
<select name="scale">
|
||||||
<input type="text" name="data" placeholder="数值"/>
|
<option value="2">二进制</option>
|
||||||
|
<option value="8">八进制</option>
|
||||||
|
<option selected value="10">十进制</option>
|
||||||
|
<option value="16">十六进制</option>
|
||||||
|
</select>
|
||||||
|
<input type="text" name="data" placeholder="请输入待转换的数值" />
|
||||||
<input type="submit" value="转换"/>
|
<input type="submit" value="转换"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<h1>转换二进制</h1>
|
|
||||||
<form action="b" method="post">
|
|
||||||
<input type="text" name="scale" onkeyup="this.value=this.value.replace(/\D/g,'')" placeholder="进制数"/><br>
|
|
||||||
<input type="text" name="data" placeholder="数值"/>
|
|
||||||
<input type="submit" value="转换" />
|
|
||||||
</form>
|
|
@ -21,27 +21,29 @@
|
|||||||
package converter
|
package converter
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"math"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/ehlxr/hex-convert/metadata"
|
"github.com/ehlxr/hex-convert/metadata"
|
||||||
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ToDecimal(scale int, data string) (int, error) {
|
func ToDecimal(scale int, data string) (int, error) {
|
||||||
var new_num float64
|
// var newNum float64
|
||||||
new_num = 0.0
|
// newNum = 0.0
|
||||||
nNum := len(strings.Split(data, "")) - 1
|
// nNum := len(strings.Split(data, "")) - 1
|
||||||
for _, value := range strings.Split(data, "") {
|
// for _, value := range strings.Split(data, "") {
|
||||||
tmp := float64(findkey(value))
|
// tmp := float64(findkey(value))
|
||||||
if tmp != -1 {
|
// if tmp != -1 {
|
||||||
new_num = new_num + tmp*math.Pow(float64(scale), float64(nNum))
|
// newNum = newNum + tmp*math.Pow(float64(scale), float64(nNum))
|
||||||
nNum = nNum - 1
|
// nNum = nNum - 1
|
||||||
} else {
|
// } else {
|
||||||
break
|
// break
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
return int(new_num), nil
|
// return int(newNum), nil
|
||||||
|
|
||||||
|
intSize := 32 << uint(^uint(0)>>63)
|
||||||
|
num, err := strconv.ParseInt(data, scale, intSize)
|
||||||
|
|
||||||
|
return int(num), err
|
||||||
}
|
}
|
||||||
|
|
||||||
func ToBinary(scale int, data string) (string, error) {
|
func ToBinary(scale int, data string) (string, error) {
|
||||||
@ -82,19 +84,19 @@ func findkey(in string) int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func fromDecimal(scale, data int) (string, error) {
|
func fromDecimal(scale, data int) (string, error) {
|
||||||
new_num_str := ""
|
newNumStr := ""
|
||||||
var remainder int
|
var remainder int
|
||||||
var remainder_string string
|
var remainderString string
|
||||||
for data != 0 {
|
for data != 0 {
|
||||||
remainder = data % scale
|
remainder = data % scale
|
||||||
if 76 > remainder && remainder > 9 {
|
if 76 > remainder && remainder > 9 {
|
||||||
remainder_string = metadata.TEN_TO_ANY[remainder]
|
remainderString = metadata.TEN_TO_ANY[remainder]
|
||||||
} else {
|
} else {
|
||||||
remainder_string = strconv.Itoa(remainder)
|
remainderString = strconv.Itoa(remainder)
|
||||||
}
|
}
|
||||||
new_num_str = remainder_string + new_num_str
|
newNumStr = remainderString + newNumStr
|
||||||
data = data / scale
|
data = data / scale
|
||||||
}
|
}
|
||||||
|
|
||||||
return new_num_str, nil
|
return newNumStr, nil
|
||||||
}
|
}
|
||||||
|
@ -19,14 +19,14 @@ var Assets = func() http.FileSystem {
|
|||||||
fs := vfsgen۰FS{
|
fs := vfsgen۰FS{
|
||||||
"/": &vfsgen۰DirInfo{
|
"/": &vfsgen۰DirInfo{
|
||||||
name: "/",
|
name: "/",
|
||||||
modTime: time.Date(2018, 8, 2, 2, 1, 27, 751097893, time.UTC),
|
modTime: time.Date(2019, 9, 19, 8, 41, 27, 36642564, time.UTC),
|
||||||
},
|
},
|
||||||
"/index.tpl": &vfsgen۰CompressedFileInfo{
|
"/index.tpl": &vfsgen۰CompressedFileInfo{
|
||||||
name: "index.tpl",
|
name: "index.tpl",
|
||||||
modTime: time.Date(2018, 8, 2, 2, 1, 27, 751448710, time.UTC),
|
modTime: time.Date(2019, 9, 19, 8, 41, 27, 35059012, time.UTC),
|
||||||
uncompressedSize: 563,
|
uncompressedSize: 434,
|
||||||
|
|
||||||
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xe4\xd0\xbd\x4e\xc3\x30\x10\x07\xf0\x3d\x4f\x71\xba\xa5\x20\xa1\x5a\xdd\x6d\x4f\x3c\x06\x8b\x93\x1c\x38\x22\xfe\x90\x7d\x46\x74\x83\x8d\x81\x8e\x9d\xd8\x98\x19\x3a\x31\x20\x10\x2f\x43\xa2\x3e\x06\x2a\x19\x22\x21\x10\x0f\xc0\x66\x59\xf7\xf1\xbf\x9f\xb4\x2b\xbd\x7f\x7b\x1a\x37\x8f\xc3\xe6\x76\xff\xfe\x30\xdc\x3d\x4b\x61\x57\xba\x92\xe7\x21\x39\x30\x0d\x77\xc1\x2b\x6c\x11\x1c\xb1\x0d\xad\xc2\x18\x32\xa3\xae\x00\x00\x64\xe7\x63\x61\xe0\x75\x24\x85\x4c\xd7\x8c\xe0\x8d\x23\x85\xb9\x31\x3d\x21\x04\x7f\x49\xeb\x12\x15\xb2\xed\xf2\xf2\xca\xf4\x85\xd4\xfc\x5c\x26\x8a\xbd\x69\xe8\x48\x9c\x9d\x8a\x8b\x93\xc5\xe2\x18\xe1\xeb\xc3\x86\xbe\xa5\xa4\x70\x8a\x33\x6e\x77\x28\xb4\xac\xd3\x1f\x3b\x5b\xc3\xe6\xdb\x80\x71\xbb\x1b\x6e\x5e\x51\xfc\xd0\x99\x4b\xed\x3a\x46\x98\x42\xe1\x44\x70\xa8\x94\xe2\x70\xb8\xae\xaa\x59\xe6\xe3\xe5\xfe\x77\x99\xfa\x7f\xc8\xc0\x4c\xf3\x19\x00\x00\xff\xff\xac\x32\x6c\x93\x33\x02\x00\x00"),
|
compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\xd1\xb1\x4a\xc5\x30\x14\x06\xe0\xd9\x3e\x45\x38\x2f\x10\xeb\x20\x0e\xc9\x79\x97\xd8\x1e\x69\x21\x6d\xc2\xcd\xa9\xe8\xa6\x60\xc1\xc1\x3b\x89\x8b\x6e\x82\x93\x8a\x4e\x0a\xa2\xd7\x97\x31\xd7\x3e\x86\xd4\x58\x70\x50\xf1\x66\x4c\xf8\xf2\x1f\xfe\xa3\xaa\x1c\x87\x97\x9b\xe5\xfc\x72\x78\xbd\x88\xc7\x0f\x4a\x56\x39\x66\x6a\xc7\xcd\x1a\x61\x0a\xae\x5d\xab\x21\x80\x68\x88\x2b\x57\x6a\xf0\x2e\x30\x60\xb6\xa6\x02\x59\x2a\x58\xb4\xa6\x21\x0d\xa1\x30\x96\x00\x33\xf1\xed\x28\xe7\x47\x2d\x76\x8d\xed\x48\xc3\x06\xe0\xdb\xd3\xc9\x94\x91\xde\xfe\x04\x5b\x80\xb1\xbf\xfe\x0f\x48\xa3\x50\x39\xc9\x7c\x1d\x30\xce\x0f\x57\xc8\xca\x37\x3f\x45\xec\x6f\x7f\x43\x4a\xa6\x94\x74\xa3\xea\xd6\x77\x2c\x78\xdf\x93\x06\xa6\x3d\x86\xaf\x22\x4a\xc3\x06\x84\xb7\xa6\xa0\xca\xd9\x92\x66\x1a\x86\xbb\xc7\x61\x71\x1a\xfb\xab\xb8\xe8\x53\xd1\xef\xe7\x47\xcb\xb3\xfb\x78\xf0\x0c\x42\xfe\xf0\x5f\xe8\xb6\x9b\x9a\x61\x9a\x2d\x19\x90\x98\x29\x39\x6e\x05\x3f\x02\x00\x00\xff\xff\xb3\x9f\x69\x73\xb2\x01\x00\x00"),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
fs["/"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
|
fs["/"].(*vfsgen۰DirInfo).entries = []os.FileInfo{
|
||||||
@ -54,7 +54,7 @@ func (fs vfsgen۰FS) Open(path string) (http.File, error) {
|
|||||||
}
|
}
|
||||||
return &vfsgen۰CompressedFile{
|
return &vfsgen۰CompressedFile{
|
||||||
vfsgen۰CompressedFileInfo: f,
|
vfsgen۰CompressedFileInfo: f,
|
||||||
gr: gr,
|
gr: gr,
|
||||||
}, nil
|
}, nil
|
||||||
case *vfsgen۰DirInfo:
|
case *vfsgen۰DirInfo:
|
||||||
return &vfsgen۰Dir{
|
return &vfsgen۰Dir{
|
||||||
|
4
go.mod
4
go.mod
@ -11,6 +11,8 @@ require (
|
|||||||
github.com/mitchellh/mapstructure v0.0.0-20180715050151-f15292f7a699 // indirect
|
github.com/mitchellh/mapstructure v0.0.0-20180715050151-f15292f7a699 // indirect
|
||||||
github.com/pelletier/go-toml v1.2.0 // indirect
|
github.com/pelletier/go-toml v1.2.0 // indirect
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||||
|
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect
|
||||||
|
github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd // indirect
|
||||||
github.com/spf13/afero v1.1.1 // indirect
|
github.com/spf13/afero v1.1.1 // indirect
|
||||||
github.com/spf13/cast v1.2.0 // indirect
|
github.com/spf13/cast v1.2.0 // indirect
|
||||||
github.com/spf13/cobra v0.0.3
|
github.com/spf13/cobra v0.0.3
|
||||||
@ -22,3 +24,5 @@ require (
|
|||||||
golang.org/x/text v0.3.0 // indirect
|
golang.org/x/text v0.3.0 // indirect
|
||||||
gopkg.in/yaml.v2 v2.2.1 // indirect
|
gopkg.in/yaml.v2 v2.2.1 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
4
go.sum
4
go.sum
@ -18,6 +18,10 @@ github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181
|
|||||||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 h1:bUGsEnyNbVPw06Bs80sCeARAlK8lhwqGyi6UT8ymuGk=
|
||||||
|
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
|
||||||
|
github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd h1:ug7PpSOB5RBPK1Kg6qskGBoP3Vnj/aNYFTznWvlkGo0=
|
||||||
|
github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
|
||||||
github.com/spf13/afero v1.1.1 h1:Lt3ihYMlE+lreX1GS4Qw4ZsNpYQLxIXKBTEOXm3nt6I=
|
github.com/spf13/afero v1.1.1 h1:Lt3ihYMlE+lreX1GS4Qw4ZsNpYQLxIXKBTEOXm3nt6I=
|
||||||
github.com/spf13/afero v1.1.1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
|
github.com/spf13/afero v1.1.1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
|
||||||
github.com/spf13/cast v1.2.0 h1:HHl1DSRbEQN2i8tJmtS6ViPyHx35+p51amrdsiTCrkg=
|
github.com/spf13/cast v1.2.0 h1:HHl1DSRbEQN2i8tJmtS6ViPyHx35+p51amrdsiTCrkg=
|
||||||
|
@ -45,7 +45,7 @@ func decimal(w http.ResponseWriter, req *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
log.Println(result)
|
log.Println(result)
|
||||||
fmt.Fprintf(w, "<a href='/'>首页</a><br> %s", strconv.Itoa(result))
|
_, _ = fmt.Fprintf(w, "<a href='/'>首页</a><br> %s", strconv.Itoa(result))
|
||||||
}
|
}
|
||||||
|
|
||||||
func binary(w http.ResponseWriter, req *http.Request) {
|
func binary(w http.ResponseWriter, req *http.Request) {
|
||||||
@ -59,7 +59,29 @@ func binary(w http.ResponseWriter, req *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
log.Println(result)
|
log.Println(result)
|
||||||
fmt.Fprintf(w, "<a href='/'>首页</a><br> %s", result)
|
_, _ = fmt.Fprintf(w, "<a href='/'>首页</a><br> %s", result)
|
||||||
|
}
|
||||||
|
|
||||||
|
func submit(w http.ResponseWriter, req *http.Request) {
|
||||||
|
scale, _ := strconv.Atoi(req.FormValue("scale"))
|
||||||
|
data := req.FormValue("data")
|
||||||
|
|
||||||
|
var bd, od, dd, hd string
|
||||||
|
if scale != 2 && scale != 8 && scale != 10 && scale != 16 {
|
||||||
|
bd, od, dd, hd = "", "", "", ""
|
||||||
|
} else {
|
||||||
|
bd, _ = converter.ToBinary(scale, data)
|
||||||
|
d, err := converter.ToDecimal(scale, data)
|
||||||
|
if err == nil {
|
||||||
|
dd = strconv.Itoa(d)
|
||||||
|
}
|
||||||
|
|
||||||
|
od, _ = converter.ToOctal(scale, data)
|
||||||
|
hd, _ = converter.ToHex(scale, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Printf("%s %s %s %s", bd, od, dd, hd)
|
||||||
|
_, _ = fmt.Fprintf(w, "<a href='/'>首页</a><br>二进制:%s 八进制:%s 十进制:%s 十六进制:%s", bd, od, dd, hd)
|
||||||
}
|
}
|
||||||
|
|
||||||
func index(w http.ResponseWriter, r *http.Request) {
|
func index(w http.ResponseWriter, r *http.Request) {
|
||||||
@ -74,13 +96,14 @@ func index(w http.ResponseWriter, r *http.Request) {
|
|||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Fprintf(w, string(fd))
|
_, _ = fmt.Fprintf(w, string(fd))
|
||||||
}
|
}
|
||||||
|
|
||||||
func Start(host string, port int) error {
|
func Start(host string, port int) error {
|
||||||
http.HandleFunc("/", index)
|
http.HandleFunc("/", index)
|
||||||
http.HandleFunc("/d", decimal)
|
http.HandleFunc("/d", decimal)
|
||||||
http.HandleFunc("/b", binary)
|
http.HandleFunc("/b", binary)
|
||||||
|
http.HandleFunc("/s", submit)
|
||||||
|
|
||||||
addr := fmt.Sprintf("%s:%d", host, port)
|
addr := fmt.Sprintf("%s:%d", host, port)
|
||||||
if strings.Contains(addr, "0.0.0.0") {
|
if strings.Contains(addr, "0.0.0.0") {
|
||||||
|
Loading…
Reference in New Issue
Block a user