|
@@ -29,7 +29,6 @@ const (
|
|
|
VariantIETF = 2
|
|
VariantIETF = 2
|
|
|
VariantMicrosoft = 6
|
|
VariantMicrosoft = 6
|
|
|
VariantFuture = 7
|
|
VariantFuture = 7
|
|
|
- HexString = "0123456789abcdef"
|
|
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
func init() {
|
|
func init() {
|
|
@@ -147,28 +146,12 @@ func UUIDFromTime(aTime time.Time) UUID {
|
|
|
// String returns the UUID in it's canonical form, a 32 digit hexadecimal
|
|
// String returns the UUID in it's canonical form, a 32 digit hexadecimal
|
|
|
// number in the form of xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
|
|
// number in the form of xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
|
|
|
func (u UUID) String() string {
|
|
func (u UUID) String() string {
|
|
|
- var b1, b2 byte
|
|
|
|
|
|
|
+ var offsets = [...]int{0, 2, 4, 6, 9, 11, 14, 16, 19, 21, 24, 26, 28, 30, 32, 34}
|
|
|
|
|
+ const hexString = "0123456789abcdef"
|
|
|
r := make([]byte, 36)
|
|
r := make([]byte, 36)
|
|
|
for i, b := range u {
|
|
for i, b := range u {
|
|
|
- b1 = HexString[b >> 4]
|
|
|
|
|
- b2 = HexString[b &^ 240]
|
|
|
|
|
- switch {
|
|
|
|
|
- case i < 4:
|
|
|
|
|
- r[i*2] = b1
|
|
|
|
|
- r[(i*2)+1] = b2
|
|
|
|
|
- case i >= 4 && i < 6:
|
|
|
|
|
- r[(i*2)+1] = b1
|
|
|
|
|
- r[(i*2)+2] = b2
|
|
|
|
|
- case i >= 6 && i < 8:
|
|
|
|
|
- r[(i*2)+2] = b1
|
|
|
|
|
- r[(i*2)+3] = b2
|
|
|
|
|
- case i >= 8 && i < 10:
|
|
|
|
|
- r[(i*2)+3] = b1
|
|
|
|
|
- r[(i*2)+4] = b2
|
|
|
|
|
- case i >= 10:
|
|
|
|
|
- r[(i*2)+4] = b1
|
|
|
|
|
- r[(i*2)+5] = b2
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ r[offsets[i]] = hexString[b>>4]
|
|
|
|
|
+ r[offsets[i]+1] = hexString[b&0xF]
|
|
|
}
|
|
}
|
|
|
r[8] = '-'
|
|
r[8] = '-'
|
|
|
r[13] = '-'
|
|
r[13] = '-'
|