go []byte 和 string之间应用
程序员文章站
2022-07-07 15:13:32
...
让 IPAddr
类型实现 fmt.Stringer
以便用点分格式输出地址。
例如,`IPAddr{1,`2,`3,`4}` 应当输出 `"1.2.3.4"`。
package main import ( "fmt" "strconv" //"strings" "bytes" ) type IPAddr [4]byte // 方法1:采用strings 工具包方案实现,需要引入strings //func (ipAddr IPAddr) String() string { // s := make([]string, len(ipAddr)) // for i := range ipAddr { // s[i] = strconv.Itoa(int(ipAddr[i])) // } // return strings.Join(s, ".") //} // 方法2:采用bytes.Buffer 方案实现,需要引入bytes;并且数据比较大的时候效率相当高 func (ipAddr IPAddr) String() string { var buf bytes.Buffer for i:=0; i<len(ipAddr); i++ { if i == 0 { buf.WriteString(strconv.Itoa(int(ipAddr[i]))) } else { buf.WriteString(".") buf.WriteString(strconv.Itoa(int(ipAddr[i]))) } } return buf.String() } func main() { addrs := map[string]IPAddr{ "loopback": {127, 0, 0, 1}, "googleDNS": {8, 8, 8, 8}, } for n, a := range addrs { fmt.Printf("%v:%v\n", n, a) } }
这个本来是go中文指南上的一个练习题,但是我在写的时候,经常string(ipAddr[i]) 打印出来是空格看不见(ascii码中都不是可见字符);查了资料才发现是转码了;
在这里直接用了strings 工具包和strconv 工具包(strconv包使用)
https://studygolang.com/articles/6189 (Go语言中连接多个字符串)
推荐阅读
-
C#中Byte[]和String之间转换的方法
-
go语言中int和byte转换方式
-
HTML5 Blob与ArrayBuffer、TypeArray和字符串String之间转换
-
C++中string和字符串之间的相互转换
-
集合(11)——C#中List〈string〉和string[]数组之间的相互转换
-
java多线程定时器和java判断一个时间是否在时间区间内和用正则表达式获取String字符串之间的数据
-
Go中string与[]byte高效互转的方法实例
-
go []byte 和 string之间应用
-
js byte字节流和数字,字符串之间的转换,包含无符和有符之间的转换
-
[转载]Java 中 byte、byte 数组和 int、long 之间的转换