回答

收藏

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

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

我需要阅读[100]byte传输一堆string数据。2 i6 w; |. T+ x0 r3 A
因为不是一切strings 的长度恰好是 100个字符,所以s 的其余部分byte array用0s填充。
2 V+ K( H! b: g4 s+ W如果我转换[100]byte为stringby: string(byteArray[:],则跟随0s 显示为^@^@s。
, N+ }( N. Y- x! ]. I/ w# G  G5 s在 C 中,string将终止于0,然后在 Go 中转byte array最好的方法是string什么?
# w, g' j) m4 Z! ^( X# {: s                                                                7 K0 G% j; y/ Y- x9 l
    解决方案:                                                               
( A: K& u! @2 }; ~+ V3 u# S                                                                将数据读入字节切片的方法返回读取的字节数。您应该保存数字,然后使用它来创建您的字符串。n您的代码将如下所示:: A) E, Y  ^/ B9 {5 A
    s := string(byteArray[:n])& B( r, w( k4 {4 S7 C% {/ E; S
可用于转换完整的字符串:
& G" Q1 F% `+ p: }+ H( F/ D
    s := string(byteArray[:len(byteArray)])# {) u9 {8 g1 S
这相当于:$ U& ?. E% k0 {- q5 y3 p

    9 ^+ `, I( m  p2 V5 G7 t9 _
  • s := string(byteArray[]code]如果你因为某种原因不知道n,你可以用这个bytes假设您的输入中没有嵌入空字符,请查找包。[code]n := bytes.Index(byteArray[],[],[],[]byte{0})
    ) W( k/ H3 L0 j) G  {' F+ k$ s
或者正如 icza 指出,您可以使用以下代码:; t3 d- y0 M% e! J
[code]n := bytes.IndexByte(byteArray[]code]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则