I decided to play around with the ${var@P} expansion in 4.4-beta.
imadev:~$ red=$(tput setaf 1) reset=$(tput sgr0)
x='\[$red\]\u\[$reset\]@\h:\w\$ '; printf %s "${x@P}" | od -t x1
0000000 1 1b 5b 33 31 6d 2 77 6f 6f 6c 65 64 67 1 1b
0000020 5b 6d f 2 40 69 6d 61 64 65 76 3a 7e 24 20
0000037
I don't think the "1" and "2" bytes should be printed. They're for
internal use only, even if they're usually invisible.
imadev:~$ printf %s "$red" | od -t x1
0000000 1b 5b 33 31 6d
0000005
imadev:~$ printf %s "$reset" | od -t x1
0000000 1b 5b 6d f
0000004