// It returns zero if the type cannot be implemented by the fast path in Read or Write.
 func intDataSize(data interface{}) int {
        switch data := data.(type) {
-       case int8, *int8, *uint8:
+       case int8, uint8, *int8, *uint8:
                return 1
        case []int8:
                return len(data)
        case []uint8:
                return len(data)
-       case int16, *int16, *uint16:
+       case int16, uint16, *int16, *uint16:
                return 2
        case []int16:
                return 2 * len(data)
        case []uint16:
                return 2 * len(data)
-       case int32, *int32, *uint32:
+       case int32, uint32, *int32, *uint32:
                return 4
        case []int32:
                return 4 * len(data)
        case []uint32:
                return 4 * len(data)
-       case int64, *int64, *uint64:
+       case int64, uint64, *int64, *uint64:
                return 8
        case []int64:
                return 8 * len(data)