1
0
Fork 0

Integer signing functions

This commit is contained in:
Gregory Eremin 2018-11-08 20:45:42 +01:00
parent ec8e2e9a9c
commit 747d978171
1 changed files with 33 additions and 0 deletions

33
mysql/signing.go Normal file
View 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))
}