The string that is returned is a so-called data-URI scheme. It do contain your image encoded as base-64 with a header (data:...
) which allows it to be used as a uri for image src and so on. That string is as human readable URL as you can get binary data.
You can pass that data-uri directly as an image source (you can also paste that string in the address bar to test):
var myImage = new Image;
myImage.src = canvas.toDataURL();
This is the only way to get an image from canvas using native methods.
If you want to isolate the binary data you can cut off the header of that uri to get the image data itself - anything after the ..base64,
is the image file itself encoded as base-64.
You need to manually decode the base-64 data though and the raw image file data is not so useful in itself, although you can load the data back as a Blob but this is meaningless in this context.
The point with a data-uri is be able to handle binary images with JavaScript as well as communicating with a server without running into encoding issues as all data is in a (human) readable ASCII range.