Skip to content

Commit 10d2bc8

Browse files
committed
Merge pull request petertodd#103
0f370eb expose uint256_to_str (pstratem) a782b77 unittests for uint256 serialization (pstratem) 69d81db Bugfix for uint256_to_str (pstratem)
2 parents 53ece6b + 0f370eb commit 10d2bc8

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

bitcoin/core/serialize.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,14 +344,13 @@ def compact_from_uint256(v):
344344
def uint256_to_str(u):
345345
r = b""
346346
for i in range(8):
347-
r += struct.pack('<I', u >> (i * 32) & 0xffff)
347+
r += struct.pack('<I', u >> (i * 32) & 0xffffffff)
348348
return r
349349

350350
def uint256_to_shortstr(u):
351351
s = "%064x" % (u,)
352352
return s[:16]
353353

354-
355354
__all__ = (
356355
'MAX_SIZE',
357356
'Hash',
@@ -372,5 +371,6 @@ def uint256_to_shortstr(u):
372371
'uint256_from_str',
373372
'uint256_from_compact',
374373
'compact_from_uint256',
374+
'uint256_to_str',
375375
'uint256_to_shortstr',
376376
)

bitcoin/tests/test_serialize.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from __future__ import absolute_import, division, print_function, unicode_literals
1313

14-
import unittest
14+
import unittest, random
1515

1616
from binascii import unhexlify
1717

@@ -133,3 +133,14 @@ def test_from_uint256(self):
133133
self.assertEqual(compact_from_uint256(0x12345600), 0x04123456)
134134
self.assertEqual(compact_from_uint256(0x92340000), 0x05009234)
135135
self.assertEqual(compact_from_uint256(0x1234560000000000000000000000000000000000000000000000000000000000), 0x20123456)
136+
137+
class Test_Uint256_Serialize(unittest.TestCase):
138+
def test_fixed(self):
139+
values = []
140+
values.append(0)
141+
values.append(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
142+
for x in range(100):
143+
values.append(random.getrandbits(256))
144+
for n in values:
145+
assert(uint256_from_str(uint256_to_str(n)) == n)
146+

0 commit comments

Comments
 (0)