如何为golang中的十六进制字符的每个字节从十六进制字符串创建附加的0x十六进制字符串?

问题描述 投票:0回答:1

使用以下内容作为起点,我可以使工作正常。

How to insert a Character every X Characters in a String in Golang?

但是我想知道是否有一种惯用的方式编写golang来完成我想做的事情,这是第一个fmt.Println的输出,如下所示:
package main

import (
    "bytes"
    "fmt"
)

func insertStringInto(s string, interval int, sep string) string {
    var buffer bytes.Buffer
    before := interval - 1
    last := len(s) - 1
    for i, char := range s {
        buffer.WriteRune(char)
        if i%interval == before && i != last {
            buffer.WriteString(sep)
        }
    }
    return buffer.String()
}


func main() {
    fmt.Println("0x" + insertStringInto("01234567891011121314151617181920", 2, ", 0x"))

    fmt.Println(insertStringInto("01234567891011121314151617181920", 2, ", 0x"))
}

产生以下内容:

0x01, 0x23, 0x45, 0x67, 0x89, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x20
01, 0x23, 0x45, 0x67, 0x89, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x20

下面链接到play.golang.org:

https://play.golang.org/p/TvLFAKsrcCB

go
1个回答
0
投票

您可以使用正则表达式

package main

import (
    "fmt"
    "regexp"
    "strings"
)

func AnotherWay(s string, after int, sep string) string {
    ex, _ := regexp.Compile(`([0-9]{2})`)
    return strings.TrimSuffix(ex.ReplaceAllString(s, sep+"$1, "), ", ")
}

func main() {
    fmt.Println(AnotherWay("01234567891011121314151617181920", 2, "0x"))
}
© www.soinside.com 2019 - 2024. All rights reserved.