Integer signing functions
This commit is contained in:
parent
ec8e2e9a9c
commit
747d978171
33
mysql/signing.go
Normal file
33
mysql/signing.go
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package mysql
|
||||||
|
|
||||||
|
import (
|
||||||
|
"unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SignUint8 converts uint8 into int8.
|
||||||
|
func SignUint8(v uint8) int8 {
|
||||||
|
return *(*int8)(unsafe.Pointer(&v))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SignUint16 converts uint16 into int16.
|
||||||
|
func SignUint16(v uint16) int16 {
|
||||||
|
return *(*int16)(unsafe.Pointer(&v))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SignUint24 converts 3-byte uint32 into int32.
|
||||||
|
func SignUint24(v uint32) int32 {
|
||||||
|
if v&0x00800000 != 0 {
|
||||||
|
v |= 0xFF000000
|
||||||
|
}
|
||||||
|
return *(*int32)(unsafe.Pointer(&v))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SignUint32 converts uint32 into int32.
|
||||||
|
func SignUint32(v uint32) int32 {
|
||||||
|
return *(*int32)(unsafe.Pointer(&v))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SignUint64 converts uint64 into int64.
|
||||||
|
func SignUint64(v uint64) int64 {
|
||||||
|
return *(*int64)(unsafe.Pointer(&v))
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user