package yu_fast import ( "unsafe" ) // B2S // // @Description: 在没有内存分配的情况下将字节片转换为字符串 func B2S(b []byte) string { return *(*string)(unsafe.Pointer(&b)) } type sliceHeader struct { data uintptr len int cap int } type stringHeader struct { data uintptr len int } // S2B // // @Description: 在没有内存分配的情况下将字符串转换为字节片 func S2B(s string) (b []byte) { bh := (*sliceHeader)(unsafe.Pointer(&b)) sh := (*stringHeader)(unsafe.Pointer(&s)) bh.data = sh.data bh.len = sh.len bh.cap = sh.len return return *(*[]byte)(unsafe.Pointer(&s)) } // P2B // // @Description: 指针转[]byte // @param ptr 数据指针 // @param size 数据尺寸 // @return []byte 转换结果 func P2B[T int | uintptr](ptr T, size T) []byte { j_bufs := make([]byte, size) copy(j_bufs, *(*[]byte)(unsafe.Pointer(&[3]uintptr{uintptr(ptr), uintptr(size), uintptr(size)}))) return j_bufs } // P2S // // @Description: 指针转 string // @param ptr 数据指针 // @param size 数据尺寸 // @return []byte 转换结果 func P2S[T int | uintptr](ptr T, size T) string { return string(P2B(ptr, size)) }