douxin9135 2014-07-19 03:42
浏览 280
已采纳

如何在GO编程中的特定索引处更改byte []中的某些字节?

I have a []byte that which is essentially a string, in this array I have found something I want to change using index:

content []byte
key []byte
newKey []byte
i = bytes.Index(content, key)

So I have found key in content (at index I), now I want to replace key with newKey but I can't seem to find a way to add it in I was trying the obvious thing that wouldn't work :)

content[i] = newKey

Is there some function that allows me to replace "key" with "newKey" within content []byte?

Thanks,

  • 写回答

1条回答 默认 最新

  • dqq22391 2014-07-19 04:10
    关注

    Following the article "Go Slices: usage and internals", you can use copy in order to create a slice with the right content:

    playground

    package main
    
    import "fmt"
    
    func main() {
        slice := make([]byte, 10)
        copy(slice[2:], "a")
        copy(slice[3:], "b")
        fmt.Printf("%v
    ", slice)
    }
    

    Output:

    [0 0 97 98 0 0 0 0 0 0]
    

    In your case, if len(key) == len(newJey):

    playground

    package main
    
    import "fmt"
    import "bytes"
    
    func main() {
        content := make([]byte, 10)
        copy(content[2:], "abcd")
        key := []byte("bc")
        newKey := []byte("xy")
        fmt.Printf("%v %v
    ", content, key)
    
        i := bytes.Index(content, key)
        copy(content[i:], newKey)
        fmt.Printf("%v %v
    ", content, newKey)
    }
    

    Output:

    [0 0 97 98 99 100 0 0 0 0] [98 99]
    [0 0 97 120 121 100 0 0 0 0] [120 121]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染