update at 2019-09-19 16:45:45 by ehlxr

This commit is contained in:
ehlxr 2019-09-19 16:45:45 +08:00
parent 15797d1823
commit c625787931
7 changed files with 75 additions and 43 deletions

1
.gitignore vendored
View File

@ -16,3 +16,4 @@ hc*
hex-convert hex-convert
.idea .idea
dist dist
.vscode

View File

@ -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>

View File

@ -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
} }

View File

@ -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
View File

@ -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
View File

@ -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=

View File

@ -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") {