mirror of
1
Fork 0
forgejo/vendor/github.com/quasoft/websspi/utf16.go

23 lines
466 B
Go

package websspi
import (
"unicode/utf16"
"unsafe"
)
// UTF16PtrToString converts a pointer to a UTF16 string to a string
func UTF16PtrToString(ptr *uint16, maxLen int) (s string) {
if ptr == nil {
return ""
}
buf := make([]uint16, 0, maxLen)
for i, p := 0, uintptr(unsafe.Pointer(ptr)); i < maxLen; i, p = i+1, p+2 {
char := *(*uint16)(unsafe.Pointer(p))
if char == 0 {
return string(utf16.Decode(buf))
}
buf = append(buf, char)
}
return ""
}