This is a question specific to the go-ethereum implementation. It may be present in other implementations, but I haven't looked yet.
In go-ethereum/common/bytes.go, the function isHex returns false if an input has an odd number of digits, and I was wondering why:
func isHex(str string) bool {
if len(str)%2 != 0 {
return false
}
for _, c := range []byte(str) {
if !isHexCharacter(c) {
return false
}
}
return true
}