回答

收藏

如何将零终止字节数组转换为字符串?

技术问答 技术问答 244 人阅读 | 0 人回复 | 2023-09-12

我需要阅读[100]byte传输一堆string数据。
6 _3 X3 W- C' j$ X# H/ W! c; F因为不是一切strings 的长度恰好是 100个字符,所以s 的其余部分byte array用0s填充。
9 j- [4 l& d; `8 l如果我转换[100]byte为stringby: string(byteArray[:],则跟随0s 显示为^@^@s。7 H' x3 m6 D% C7 |8 Z6 g% m
在 C 中,string将终止于0,然后在 Go 中转byte array最好的方法是string什么?
/ F  z$ f0 _6 p- q8 Q& n                                                               
/ @: D1 G0 Z, I' q$ [    解决方案:                                                               
5 w& z. y  b% [- V                                                                将数据读入字节切片的方法返回读取的字节数。您应该保存数字,然后使用它来创建您的字符串。n您的代码将如下所示:  ]' H0 G% C- Q7 O7 K% k6 F
    s := string(byteArray[:n])$ r7 a8 p8 h( K7 U( i0 L
可用于转换完整的字符串:; ^+ }; O2 S( i+ p
    s := string(byteArray[:len(byteArray)])6 @! o# w+ V, w; ?. N" [; x
这相当于:
  P. X8 S4 T# D- [5 a0 C3 R
    2 |: X" `* `6 f" p8 X8 V2 i
  • s := string(byteArray[]code]如果你因为某种原因不知道n,你可以用这个bytes假设您的输入中没有嵌入空字符,请查找包。[code]n := bytes.Index(byteArray[],[],[],[]byte{0})
    $ X9 X) N; e6 Y$ w1 g" A
或者正如 icza 指出,您可以使用以下代码:! G) \2 P' z# n5 d2 B8 X( c6 q, M
[code]n := bytes.IndexByte(byteArray[]code]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则