summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_long.py2
-rw-r--r--Misc/NEWS3
-rw-r--r--Objects/longobject.c4
-rw-r--r--Objects/stringobject.c16
4 files changed, 11 insertions, 14 deletions
diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py
index ac786bd..7b0c7b0 100644
--- a/Lib/test/test_long.py
+++ b/Lib/test/test_long.py
@@ -208,7 +208,7 @@ class LongTest(unittest.TestCase):
digits = digits or [0]
return '-'[:sign] + \
{8: '0', 10: '', 16: '0x'}[base] + \
- "".join(map(lambda i: "0123456789ABCDEF"[i], digits)) + "L"
+ "".join(map(lambda i: "0123456789abcdef"[i], digits)) + "L"
def check_format_1(self, x):
for base, mapper in (8, oct), (10, repr), (16, hex):
diff --git a/Misc/NEWS b/Misc/NEWS
index f1a0c88..8d86efd 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 2.5 alpha 1?
Core and builtins
-----------------
+- SF bug #1224347: hex longs now print with lowercase letters just
+ like their int counterparts.
+
- SF bug #1163563: the original fix for bug #1010677 ("thread Module
Breaks PyGILState_Ensure()") broke badly in the case of multiple
interpreter states; back out that fix and do a better job (see
diff --git a/Objects/longobject.c b/Objects/longobject.c
index e4fc553..1f328dd3 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -1090,7 +1090,7 @@ long_format(PyObject *aa, int base, int addL)
assert(accumbits >= basebits);
do {
char cdigit = (char)(accum & (base - 1));
- cdigit += (cdigit < 10) ? '0' : 'A'-10;
+ cdigit += (cdigit < 10) ? '0' : 'a'-10;
assert(p > PyString_AS_STRING(str));
*--p = cdigit;
accumbits -= basebits;
@@ -1144,7 +1144,7 @@ long_format(PyObject *aa, int base, int addL)
digit nextrem = (digit)(rem / base);
char c = (char)(rem - nextrem * base);
assert(p > PyString_AS_STRING(str));
- c += (c < 10) ? '0' : 'A'-10;
+ c += (c < 10) ? '0' : 'a'-10;
*--p = c;
rem = nextrem;
--ntostore;
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 176e0d2b..8a9dc52 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -3753,18 +3753,12 @@ _PyString_FormatLong(PyObject *val, int flags, int prec, int type,
}
/* Fix up case for hex conversions. */
- switch (type) {
- case 'x':
- /* Need to convert all upper case letters to lower case. */
+ if (type == 'X') {
+ /* Need to convert all lower case letters to upper case.
+ and need to convert 0x to 0X (and -0x to -0X). */
for (i = 0; i < len; i++)
- if (buf[i] >= 'A' && buf[i] <= 'F')
- buf[i] += 'a'-'A';
- break;
- case 'X':
- /* Need to convert 0x to 0X (and -0x to -0X). */
- if (buf[sign + 1] == 'x')
- buf[sign + 1] = 'X';
- break;
+ if (buf[i] >= 'a' && buf[i] <= 'x')
+ buf[i] -= 'a'-'A';
}
*pbuf = buf;
*plen = len;