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 "" }