如何验证字符串是否代表一个十六进制数字

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

这主要是有效的:

import "encoding/hex"

func isHexString(s string) bool {
    _, err := hex.DecodeString(s)
    return err == nil
}

但是,我们也可能希望支持奇数长度的十六进制字符串。检查hex.ErrLength不起作用,因为此错误在字符串是否包含十六进制字符之前。我想可以操纵字符串来包含适当数量的字符并应用两个检查,但似乎应该有更好的方法。

https://golang.org/pkg/encoding/hex/#DecodeString

go
1个回答
5
投票

如果您的目标是将十六进制数字解析为整数或无符号整数,则调用strconv.ParseIntstrconv.ParseUint

n, err := strconv.ParseUint(s, 16, 64)
if err != nil {
    // s is not a valid
}
© www.soinside.com 2019 - 2024. All rights reserved.