feat(big): add SBigFromStr

This commit is contained in:
Adam Heinermann 2024-11-15 03:50:22 -08:00 committed by superp00t
parent fac094793a
commit 896c3c0414
5 changed files with 42 additions and 0 deletions

View file

@ -48,6 +48,10 @@ void SBigFromBinary(BigData* num, const void* data, uint32_t bytes) {
FromBinary(num->Primary(), data, bytes);
}
void SBigFromStr(BigData* num, const char *str) {
FromStr(num->Primary(), str);
}
void SBigFromUnsigned(BigData* num, uint32_t val) {
FromUnsigned(num->Primary(), val);
}

View file

@ -20,6 +20,8 @@ void SBigDel(BigData* num);
void SBigFromBinary(BigData* num, const void* data, uint32_t bytes);
void SBigFromStr(BigData* num, const char* str);
void SBigFromUnsigned(BigData* num, uint32_t val);
void SBigMod(BigData* a, BigData* b, BigData* c);

View file

@ -167,6 +167,14 @@ void FromBinary(BigBuffer& buffer, const void* data, uint32_t bytes) {
}
}
void FromStr(BigBuffer& buffer, const char* str) {
SetZero(buffer);
for (; *str; str++) {
Mul(buffer, buffer, 10);
Add(buffer, buffer, *str - '0');
}
}
void FromUnsigned(BigBuffer& buffer, uint32_t value) {
buffer[0] = value;
buffer.SetCount(1);

View file

@ -25,6 +25,8 @@ uint32_t ExtractLowPartSx(uint64_t& value);
void FromBinary(BigBuffer& buffer, const void* value, uint32_t bytes);
void FromStr(BigBuffer& buffer, const char* str);
void FromUnsigned(BigBuffer& buffer, uint32_t value);
uint32_t HighBitPos(const BigBuffer& buffer);