repr(b"\0") should return b"\x00", not the (unusual) b"\0".
diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py
index 102eb46..ded0491 100644
--- a/Lib/test/test_bytes.py
+++ b/Lib/test/test_bytes.py
@@ -73,8 +73,9 @@
 
     def test_repr(self):
         self.assertEqual(repr(bytes()), "b''")
-        self.assertEqual(repr(bytes([0])), "b'\\0'")
-        self.assertEqual(repr(bytes([0, 1, 254, 255])), "b'\\0\\x01\\xfe\\xff'")
+        self.assertEqual(repr(bytes([0])), "b'\\x00'")
+        self.assertEqual(repr(bytes([0, 1, 254, 255])),
+                         "b'\\x00\\x01\\xfe\\xff'")
         self.assertEqual(repr(bytes('abc')), "b'abc'")
         self.assertEqual(repr(bytes("'")), "b'\\''")
 
diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c
index cb830e3..3a707ac 100644
--- a/Objects/bytesobject.c
+++ b/Objects/bytesobject.c
@@ -849,7 +849,7 @@
             else if (c == '\r')
                 *p++ = '\\', *p++ = 'r';
             else if (c == 0)
-                *p++ = '\\', *p++ = '0';
+                *p++ = '\\', *p++ = 'x', *p++ = '0', *p++ = '0';
             else if (c < ' ' || c >= 0x7f) {
                 /* For performance, we don't want to call
                    PyOS_snprintf here (extra layers of