fixed length bug
This commit is contained in:
+6
-7
@@ -312,23 +312,22 @@ void Wallet::encode(char (&buf)[ADDRESS_LENGTH]) const
|
||||
// Encode to base58 with variable-length data
|
||||
const int actual_num_full_blocks = static_cast<int>(total_data_size / sizeof(uint64_t));
|
||||
const int actual_last_block_bytes = static_cast<int>(total_data_size % sizeof(uint64_t));
|
||||
const int actual_last_block_size_index = actual_last_block_bytes > 0 ? block_sizes_lookup[actual_last_block_bytes] : -1;
|
||||
|
||||
|
||||
int buf_index = 0;
|
||||
for (int i = 0; i <= actual_num_full_blocks; ++i) {
|
||||
const bool is_last_block = (i == actual_num_full_blocks);
|
||||
const int bytes_in_block = is_last_block ? actual_last_block_bytes : static_cast<int>(sizeof(uint64_t));
|
||||
|
||||
|
||||
if (is_last_block && bytes_in_block == 0) break;
|
||||
|
||||
|
||||
// Read bytes in big-endian
|
||||
uint64_t n = 0;
|
||||
for (int j = 0; j < bytes_in_block; ++j) {
|
||||
n = (n << 8) | data[i * sizeof(uint64_t) + j];
|
||||
}
|
||||
|
||||
// Determine output block size
|
||||
const int output_block_size = is_last_block ? block_sizes[actual_last_block_size_index] : block_sizes.back();
|
||||
|
||||
// Determine output block size - use block_sizes directly indexed by byte count
|
||||
const int output_block_size = is_last_block ? block_sizes[actual_last_block_bytes] : block_sizes.back();
|
||||
|
||||
// Encode to base58
|
||||
for (int j = output_block_size - 1; j >= 0; --j) {
|
||||
|
||||
Reference in New Issue
Block a user