-
Notifications
You must be signed in to change notification settings - Fork 2
strconv.ParseXxx for []byte arguments
License
nsd20463/bytesconv
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
tl;dr: strconv.ParseXxx with []byte arguments.
Package bytesconv implements conversions from []byte representations
of basic data types. These are the routines missing from the standard
library's bytesconv. When parsing input data, which naturally arrives as
[]byte, these make parsing the input free of garbage creation. (Using
the bytesconv.ParseXxx functions creates a temporary string which the compiler
isn't (in 1.7) good enough to eliminate. There's a long discussion about
the need for these []byte parsing functions in the go, and the masters
are still, years later, waiting for the compiler to get it right. I can't
wait for my code to get it right, hence this largely C&Ved package.)
Note that only conversions from []byte are implemented. Converting to []byte
is already handled by the standard library's strconv package's AppendXxx
functions.
Numeric Conversions
ParseBool, ParseFloat, ParseInt, and ParseUint convert strings to values:
b, err := bytesconv.ParseBool([]byte("true"))
f, err := bytesconv.ParseFloat([]byte("3.1415"), 64)
i, err := bytesconv.ParseInt([]byte("-42"), 10, 64)
u, err := bytesconv.ParseUint([]byte("42"), 10, 64)
The parse functions return the widest type (float64, int64, and uint64),
but if the size argument specifies a narrower width the result can be
converted to that narrower type without data loss:
s := []byte("2147483647") // biggest int32
i64, err := bytesconv.ParseInt(s, 10, 32)
...
i := int32(i64)
About
strconv.ParseXxx for []byte arguments
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published