diff --git a/Lib/test/test_struct.py b/Lib/test/test_struct.py
index be00475..cf1d567 100644
--- a/Lib/test/test_struct.py
+++ b/Lib/test/test_struct.py
@@ -530,13 +530,13 @@
 
         # format lists containing only count spec should result in an error
         self.assertRaises(struct.error, struct.pack, '12345')
-        self.assertRaises(struct.error, struct.unpack, '12345', '')
+        self.assertRaises(struct.error, struct.unpack, '12345', b'')
         self.assertRaises(struct.error, struct.pack_into, '12345', store, 0)
         self.assertRaises(struct.error, struct.unpack_from, '12345', store, 0)
 
         # Format lists with trailing count spec should result in an error
         self.assertRaises(struct.error, struct.pack, 'c12345', 'x')
-        self.assertRaises(struct.error, struct.unpack, 'c12345', 'x')
+        self.assertRaises(struct.error, struct.unpack, 'c12345', b'x')
         self.assertRaises(struct.error, struct.pack_into, 'c12345', store, 0,
                            'x')
         self.assertRaises(struct.error, struct.unpack_from, 'c12345', store,
@@ -545,7 +545,7 @@
         # Mixed format tests
         self.assertRaises(struct.error, struct.pack, '14s42', 'spam and eggs')
         self.assertRaises(struct.error, struct.unpack, '14s42',
-                          'spam and eggs')
+                          b'spam and eggs')
         self.assertRaises(struct.error, struct.pack_into, '14s42', store, 0,
                           'spam and eggs')
         self.assertRaises(struct.error, struct.unpack_from, '14s42', store, 0)
diff --git a/Modules/_struct.c b/Modules/_struct.c
index 3626bad..78cd0f3 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -2162,7 +2162,7 @@
 unpack
 
     format: object
-    inputstr: object
+    buffer: Py_buffer
     /
 
 Return a tuple containing values unpacked according to the format string.
@@ -2173,8 +2173,8 @@
 [clinic start generated code]*/
 
 static PyObject *
-unpack_impl(PyObject *module, PyObject *format, PyObject *inputstr)
-/*[clinic end generated code: output=06951d66eae6d63b input=4b81d54988890f5e]*/
+unpack_impl(PyObject *module, PyObject *format, Py_buffer *buffer)
+/*[clinic end generated code: output=f75ada02aaa33b3b input=654078e6660c2df0]*/
 {
     PyStructObject *s_object;
     PyObject *result;
@@ -2182,7 +2182,7 @@
     s_object = cache_struct(format);
     if (s_object == NULL)
         return NULL;
-    result = Struct_unpack(s_object, inputstr);
+    result = Struct_unpack_impl(s_object, buffer);
     Py_DECREF(s_object);
     return result;
 }
diff --git a/Modules/clinic/_struct.c.h b/Modules/clinic/_struct.c.h
index f05ea53..f9c3a5c 100644
--- a/Modules/clinic/_struct.c.h
+++ b/Modules/clinic/_struct.c.h
@@ -156,7 +156,7 @@
     {"calcsize", (PyCFunction)calcsize, METH_O, calcsize__doc__},
 
 PyDoc_STRVAR(unpack__doc__,
-"unpack($module, format, inputstr, /)\n"
+"unpack($module, format, buffer, /)\n"
 "--\n"
 "\n"
 "Return a tuple containing values unpacked according to the format string.\n"
@@ -169,27 +169,31 @@
     {"unpack", (PyCFunction)unpack, METH_FASTCALL, unpack__doc__},
 
 static PyObject *
-unpack_impl(PyObject *module, PyObject *format, PyObject *inputstr);
+unpack_impl(PyObject *module, PyObject *format, Py_buffer *buffer);
 
 static PyObject *
 unpack(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
 {
     PyObject *return_value = NULL;
     PyObject *format;
-    PyObject *inputstr;
+    Py_buffer buffer = {NULL, NULL};
 
-    if (!_PyArg_UnpackStack(args, nargs, "unpack",
-        2, 2,
-        &format, &inputstr)) {
+    if (!_PyArg_ParseStack(args, nargs, "Oy*:unpack",
+        &format, &buffer)) {
         goto exit;
     }
 
     if (!_PyArg_NoStackKeywords("unpack", kwnames)) {
         goto exit;
     }
-    return_value = unpack_impl(module, format, inputstr);
+    return_value = unpack_impl(module, format, &buffer);
 
 exit:
+    /* Cleanup for buffer */
+    if (buffer.obj) {
+       PyBuffer_Release(&buffer);
+    }
+
     return return_value;
 }
 
@@ -273,4 +277,4 @@
 exit:
     return return_value;
 }
-/*[clinic end generated code: output=db8152ad222fa3d0 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=0714090a5d0ea8ce input=a9049054013a1b77]*/
