我有我的脚本“file.go”用“go build file.go”构建,现在我有“file.exe”
在代码中我有“steamid:= xxxxxxxxxxxxxxxx”无论如何在cmd中执行file.exe时如“file.exe -steamid = xxxxxxxxxxxxxxxx”
代码:
package main
import (
"crypto/md5"
"fmt"
)
func main() {
steamid := xxxxxxxxxxxxxxxx
h := md5.New()
h.Write([]byte("BE"))
for i := 0; i < 8; i++ {
h.Write([]byte{byte(steamid & 0xFF)})
steamid >>= 8
}
fmt.Printf("Battleye GUID: %x", h.Sum(nil))
}
我已经在这里得到了新的回复;
package main
import (
"crypto/md5"
"fmt"
"bufio"
"os"
"flag"
)
var SteamID string
func init() {
flag.StringVar(&SteamID, "steamid", "XXXXXXXXXXXXXXXXX", "17 Numbers SteamID")
}
func main() {
steamid := &SteamID
h := md5.New()
h.Write([]byte("BE"))
for i := 0; i < 8; i++ {
h.Write([]byte{byte(steamid & 0xFF)})
steamid >>= 8
}
fmt.Printf("Battleye GUID: %x", h.Sum(nil))
fmt.Print("\nPress 'Enter' to continue...")
bufio.NewReader(os.Stdin).ReadBytes('\n')
}
错误:
C:\Go\bin>go build file.go
# command-line-arguments
.\file.go:24: invalid operation: steamid & 255 (mismatched types *string and int)
.\file.go:25: invalid operation: steamid >>= 8 (shift of type *string)
答案 0 :(得分:2)
标准库中包含的flag package就是这样。
您需要在脚本中添加的内容:
var SteamID string
func init() {
flag.StringVar(&SteamID, "steamid", "<insert default value>", "<insert help text>")
}
(如果您需要将其作为整数获取,请改用Int64Var) 然后在你的主要功能中添加:
flag.Parse()
这将初始化SteamID
答案 1 :(得分:0)
全部在错误消息中。您不能使用字符串,指向字符串的指针或任何非整数的指针进行按位操作,您需要先将它们转换或解析为整数。使用strconv.ParseInt及其strconv
包中的朋友来解析字符串。
parsedID, e := strconv.ParseInt(*steamID, 16, 64)
if e != nil { log.Fatal("couldn't parse the ID") }
// Use parsedID.