gpt4 book ai didi

string - 戈兰 : verify that string is a valid hex string?

转载 作者:行者123 更新时间:2023-12-03 07:58:38 24 4
gpt4 key购买 nike

我有一个结构:

type Name struct {
hexID string
age uint8
}

检查 hexID 字段是否为有效的十六进制字符串的最简单方法是什么?如果没有 - 则会出现错误。

例如:

var n Name
n.hexID = "Hello World >)" // not a valid hex
n.hexID = "aaa12Eb9990101010101112cC" // valid hex

或者也许某个地方存在 struct tag

最佳答案

迭代字符串的字符,并检查每个字符是否是有效的十六进制数字。

func isValidHex(s string) bool {
for _, r := range s {
if !(r >= '0' && r <= '9' || r >= 'a' && r <= 'f' || r >= 'A' && r <= 'F') {
return false
}
}
return true
}

测试它:

fmt.Println(isValidHex("Hello World >)"))
fmt.Println(isValidHex("aaa12Eb9990101010101112cC"))

输出(在 Go Playground 上尝试):

false
true

注意:您可能会想使用 hex.DecodeString()并检查返回的错误:如果是nil,则它是有效的。但请注意,此函数期望字符串具有偶数长度(因为它从十六进制数字生成字节,并且 2 个十六进制数字形成一个字节)。更不用说如果您不需要结果(作为字节 slice ),这会更慢并且会产生不必要的垃圾(供 gc 收集)。

另一个解决方案可以使用 big.Int.SetString() :

func isValidHex(s string) bool {
_, ok := new(big.Int).SetString(s, 16)
return ok
}

这输出相同,请在 Go Playground 上尝试一下。但这又比较慢并且使用内存分配(生成垃圾)。

关于string - 戈兰 : verify that string is a valid hex string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75157193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com