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

如何将[1024] C.char转换为[1024] byte

吉俊德
2023-03-14
问题内容

如何转换此C(数组)类型:

char my_buf[BUF_SIZE];

转到此Go(数组)类型:

type buffer [C.BUF_SIZE]byte

?尝试进行接口转换会给我这个错误:

cannot convert (*_Cvar_my_buf) (type [1024]C.char) to type [1024]byte

问题答案:

最简单,最安全的方法是将其复制到切片中,而不是专门复制到 [1024]byte

mySlice := C.GoBytes(unsafe.Pointer(&C.my_buff), C.BUFF_SIZE)

要直接使用内存而不进行复制,可以通过来“广播” unsafe.Pointer

mySlice := (*[1 << 30]byte)(unsafe.Pointer(&C.my_buf))[:int(C.BUFF_SIZE):int(C.BUFF_SIZE)]
// or for an array if BUFF_SIZE is a constant
myArray := *(*[C.BUFF_SIZE]byte)(unsafe.Pointer(&C.my_buf))


 类似资料:
  • 的限制是从-2147483648到2147483647。 如果我输入 然后Eclipse会在“2147483648”下提示红色下划线。 但是如果我这样做: 很好。 也许这是Java中的一个基本问题,但我不知道为什么第二个变体不会产生错误。

  • 问题内容: 上限为-2147483648至2147483647。 如果我输入 然后Eclipse将在“ 2147483648”下提示红色下划线。 但是,如果我这样做: 它将编译良好。 也许这是Java中的一个基本问题,但是我不知道为什么第二个变体不会产生任何错误。 问题答案: 那句话没有错。您只是将4个数字相乘并将其分配给一个int,恰好发生溢出。这与分配单个 文字 不同,后者在编译时会进行边界检

  • 1024 1024是一个基于Java 的小游戏。 游戏规则 可将活动方块向上,下,左,右4个方向移动 相同数字的方块碰撞到一起可合并为一个方块,合并的方块数字为2者之和 操作 选中:单击目标方块 移动:上(W),下(S),左(A),右(D)  重新开始:空格(Space) 演示 数字与颜色对照表 对应的数字依次为2的N次方 版权 本软件遵循GPL(GNU GENERAL PUBLIC LICENS

  • 问题内容: 在Java中将字符串拆分为1024个字节的块的有效方法是什么?如果有多个块,则需要在所有后续块中重复标头(固定大小的字符串)。 问题答案: 字符串和字节是完全不同的两件事,因此要将字符串拆分为字节与将绘画拆分为经文一样没有意义。 您实际上想做什么? 要在字符串和字节之间进行转换,您需要指定一种编码,该编码可以对String中的所有字符进行编码。根据编码和字符,其中一些可能跨越一个以上的

  • 这是我生成RSA密钥的代码 现在我想转换DER/ASN.1编码字节,也知道使用Java JCE API生成RSA密钥时使用的默认编码格式是什么。

  • 在iOS10中,NSlog限制为1024个字符,任何人都知道打印完整字符串的解决方法。