| 1234567891011121314151617181920212223242526272829 |
- package encoder
- import (
- "bytes"
- "encoding/binary"
- "errors"
- "unicode/utf16"
- )
- func FromUnicode(d []byte) (string, error) {
- // Credit to https://github.com/Azure/go-ntlmssp/blob/master/unicode.go for logic
- if len(d)%2 > 0 {
- return "", errors.New("Unicode (UTF 16 LE) specified, but uneven data length")
- }
- s := make([]uint16, len(d)/2)
- err := binary.Read(bytes.NewReader(d), binary.LittleEndian, &s)
- if err != nil {
- return "", err
- }
- return string(utf16.Decode(s)), nil
- }
- func ToUnicode(s string) []byte {
- // Credit to https://github.com/Azure/go-ntlmssp/blob/master/unicode.go for logic
- uints := utf16.Encode([]rune(s))
- b := bytes.Buffer{}
- binary.Write(&b, binary.LittleEndian, &uints)
- return b.Bytes()
- }
|