Changes in anticipation of stricter str vs. bytes enforcement.
diff --git a/Lib/base64.py b/Lib/base64.py
index de3f184..cec6422 100755
--- a/Lib/base64.py
+++ b/Lib/base64.py
@@ -54,7 +54,7 @@
     encoded = binascii.b2a_base64(s)[:-1]
     if altchars is not None:
         if not isinstance(altchars, bytes):
-            altchars = bytes(altchars)
+            altchars = bytes(altchars, "ascii")
         assert len(altchars) == 2, repr(altchars)
         return _translate(encoded, {'+': altchars[0:1], '/': altchars[1:2]})
     return encoded
@@ -75,7 +75,7 @@
         s = bytes(s)
     if altchars is not None:
         if not isinstance(altchars, bytes):
-            altchars = bytes(altchars)
+            altchars = bytes(altchars, "ascii")
         assert len(altchars) == 2, repr(altchars)
         s = _translate(s, {chr(altchars[0]): b'+', chr(altchars[1]): b'/'})
     return binascii.a2b_base64(s)
@@ -239,7 +239,7 @@
             acc = 0
             shift = 35
     # Process the last, partial quanta
-    last = binascii.unhexlify(bytes('%010x' % acc))
+    last = binascii.unhexlify(bytes('%010x' % acc, "ascii"))
     if padchars == 0:
         last = b''                      # No characters
     elif padchars == 1:
@@ -323,8 +323,7 @@
 
 def encodestring(s):
     """Encode a string into multiple lines of base-64 data."""
-    if not isinstance(s, bytes):
-        s = bytes(s)
+    assert isinstance(s, bytes), repr(s)
     pieces = []
     for i in range(0, len(s), MAXBINSIZE):
         chunk = s[i : i + MAXBINSIZE]
@@ -334,8 +333,7 @@
 
 def decodestring(s):
     """Decode a string."""
-    if not isinstance(s, bytes):
-        s = bytes(s)
+    assert isinstance(s, bytes), repr(s)
     return binascii.a2b_base64(s)