mirror of
https://github.com/thunderbrewhq/squall.git
synced 2025-12-12 02:22:30 +00:00
feat(big): implement ToStream and EncodeDataBytes ops
This commit is contained in:
parent
8e96181679
commit
6a88f93619
3 changed files with 68 additions and 1 deletions
|
|
@ -131,6 +131,15 @@ void Div(BigBuffer& a, BigBuffer& b, const BigBuffer& c, const BigBuffer& d, Big
|
|||
stack.Free(allocCount);
|
||||
}
|
||||
|
||||
void EncodeDataBytes(TSGrowableArray<uint8_t>& output, uint32_t value) {
|
||||
uint32_t v = value;
|
||||
while (v != 0) {
|
||||
*output.New() = v % 255u;
|
||||
v /= 255u;
|
||||
}
|
||||
*output.New() = 255;
|
||||
}
|
||||
|
||||
uint32_t ExtractLowPart(uint64_t& value) {
|
||||
auto low = static_cast<uint32_t>(value);
|
||||
value >>= 32;
|
||||
|
|
@ -467,3 +476,9 @@ void ToBinary(TSGrowableArray<uint8_t>& output, const BigBuffer& buffer) {
|
|||
output.SetCount(0);
|
||||
ToBinaryAppend(output, buffer);
|
||||
}
|
||||
|
||||
void ToStream(TSGrowableArray<uint8_t>& output, const BigBuffer& buffer) {
|
||||
ToBinary(output, buffer);
|
||||
EncodeDataBytes(output, output.Count());
|
||||
ToBinaryAppend(output, buffer);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ void Div(BigBuffer& a, uint32_t* b, const BigBuffer& c, uint64_t d);
|
|||
|
||||
void Div(BigBuffer& a, BigBuffer& b, const BigBuffer& c, const BigBuffer& d, BigStack& stack);
|
||||
|
||||
void EncodeDataBytes(TSGrowableArray<uint8_t>& output, uint32_t value);
|
||||
|
||||
uint32_t ExtractLowPart(uint64_t& value);
|
||||
|
||||
uint32_t ExtractLowPartLargeSum(uint64_t& value, uint64_t add);
|
||||
|
|
@ -71,4 +73,6 @@ void Sub(BigBuffer& a, const BigBuffer& b, uint32_t c);
|
|||
|
||||
void ToBinary(TSGrowableArray<uint8_t>& output, const BigBuffer& buffer);
|
||||
|
||||
void ToStream(TSGrowableArray<uint8_t>& output, const BigBuffer& buffer);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue