当前位置: 首页 > 面试题库 >

将指针转换为字节片

章丰茂
2023-03-14
问题内容

Mmap()在系统调用x/sys/unix
包在Golang返回[]byte类型,而底层系统调用实际上返回一个指针。它是如何做到的?

更具体地说,在Golang开发人员的此程序包中,该VirtualAlloc函数仅返回一个指针。如何将其转换为字节片,就像在Unix软件包中一样?


问题答案:

使用该unsafe包,您可以golang.org/x/sys/unix在未导出类型的Mmap方法中执行相同的操作mmapper

// Slice memory layout
var sl = struct {
    addr uintptr
    len  int
    cap  int
}{addr, length, length}

// Use unsafe to turn sl into a []byte.
b := *(*[]byte)(unsafe.Pointer(&sl))

这是一个操场的例子。



 类似资料:
  • 问题内容: 如果我有: 上面是固定的-我不能更改foo或bar。另外,baz必须在bar内转换回foo struct指针。如何将&foo {}强制转换为interface {},以便在调用bar时可以将其用作参数? 问题答案: 要打开到一个很简单: 为了返回到,您可以执行 类型断言 : 或 类型开关 (类似,但可以是多种类型则很有用):

  • 当使用来自外部库的函数时,“任意”取消引用指向const引用的指针是否安全? 这样做是否普遍安全/明智 更重要的是,除了C语言中“不赞成”的原始指针之外,使用常量指针真的有充分的理由这样做吗?

  • 我想将字节转换为JsonObject。我试着这样: 但我遇到编译器错误: 我怎么能这样呢?

  • 问题内容: 我想将字符串切片转换为指向字符串的指针切片 %!p(string = a)=>字符串 %!p(string = b)=>字符串 %!p(string = c)=>字符串 [0xc42000e1d0 0xc42000e1d0 0xc42000e1d0] 据我了解, 我的变量似乎是一个字符串,而不是指向字符串的指针。 因此应从迭代时复制。 显然我不正确,因为地址仍然相同。如果值不是指针,该

  • 问题内容: 我想在GO中将字符串数组转换为字节数组,以便可以将其写到磁盘上。将字符串数组()解码为字节数组()的最佳解决方案是什么? 我正在考虑对字符串数组进行两次迭代,第一个迭代以获得字节数组所需的实际大小,然后第二个迭代写入每个元素的长度和实际字符串()。 解决方案必须能够以其他方式进行转换;从一个到一个。 问题答案: 让我们忽略一个事实,那就是走一秒钟。您需要做的第一件事是将序列化格式编组为

  • 我遇到了将字节字符串转换为字节数组的强制转换问题。 我有一个字符串[B@1a758cb。也就是Base64加密的String的主String"Gunjan"。这里的解密我想把加密的字节串转换成字节[]。 但是String.get字节[]不适合我。String.getBytes[]给出字节String的字节数。 我该怎么做??我是否必须迭代字节字符串中的每个字符并将其转换为字节[]?? 编辑 我使用