6

What's the fmt code for printing a string as an array of bytes?

If I have a marshaled json object, I can print bytes like so:

type Fakejs struct {
    Fake string `json:"fake"`
}

fjs := Fakejs {Fake:"abc"}
mjs, err := json.Marshal(fjs)
fmt.Println(mjs)

Produces

[123 34 102 97 107 101 34 58 34 97 98 99 34 125]

Which is what I want. However, with a regular string, I try this:

mystr := "{\"fake\":\"abc\"}"
fmt.Printf("mystr:\t %x \n", []byte(mystr))

And this produces:

7b2266616b65223a22616263227d

Which is not what I want. What is the "%x"-like format code that will printf the string as an array of bytes.

2
  • 1
    %v prints the raw value in its default format: play.golang.org/p/W5F_BeOgX_g Commented May 2, 2019 at 20:46
  • Looks like an answer to me. Thanks! Commented May 2, 2019 at 20:48

1 Answer 1

16

https://play.golang.org/p/eQcZm57k1C1

package main

import (
    "fmt"
)

func main() {
    mystr := "{\"fake\":\"abc\"}"
    fmt.Printf("mystr:\t %v \n", []byte(mystr))
}

prints

mystr:   [123 34 102 97 107 101 34 58 34 97 98 99 34 125] 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.