踩坑记 string(fid) 与 strconv.Itoa(fid)
遇到坑
在用golang做laravel进程管理的时候,发现一个“坑”:
strconv.Itoa(fid) 才能达到想要的数字字符
string(fid) 并不能!!(因为该转换会将数字直接转换为该数字对应的内码)
fidstr := strconv.Itoa(fid) fidstr := string(fid) fmt.Printf("exec: %s %s %s %s\n",PHP,artisan,option,fidstr) cmd := exec.Command(br.PHP,br.artisan,br.option,fidstr)
当且仅当 data
为[]byte
类型时 string(data)
才能达到想要的目标。
而其他情况,则需要根据类型来转换:
比如: strconv.Itoa(int)
,否则得到的不是我们想要。
测试两种方式的 ASCII 值
看测试代码
func Test_IntToString(t *testing.T) { fmt.Printf("string(1) = %v\n",[]byte(string(1))) fmt.Printf("strconv.Itoa(1) = %v\n",[]byte(strconv.Itoa(1))) }
我们得到运行如下结果:
string(1) = [1] strconv.Itoa(1) = [49]
结论已经很明显,string(int)
会将整数直译为ASCII编码,
而strconv.Itoa(int)
才会转换成对应的数字字符在ASACII编码。
原文地址:https://www.jb51.cc/go/187402.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。