| 1234567891011121314151617181920212223242526272829303132333435363738 |
- package util
- import (
- "io"
- "reflect"
- "unsafe"
- )
- func WriteFull(writer io.Writer, buf []byte) error {
- total := len(buf)
- for pos := 0; pos < total; {
- n, err := writer.Write(buf[pos:])
- if err != nil {
- return err
- }
- pos += n
- }
- return nil
- }
- func String2Bytes(s string) []byte {
- stringHeader := (*reflect.StringHeader)(unsafe.Pointer(&s))
- bh := reflect.SliceHeader{
- Data: stringHeader.Data,
- Len: stringHeader.Len,
- Cap: stringHeader.Len,
- }
- return *(*[]byte)(unsafe.Pointer(&bh))
- }
- func Bytes2String(b []byte) string {
- sliceHeader := (*reflect.SliceHeader)(unsafe.Pointer(&b))
- sh := reflect.StringHeader{
- Data: sliceHeader.Data,
- Len: sliceHeader.Len,
- }
- return *(*string)(unsafe.Pointer(&sh))
- }
|