hex_to_str
This commit is contained in:
parent
ebe6e58ef3
commit
be2c4e7792
@ -20,6 +20,7 @@ typedef int64_t i64;
|
||||
typedef uint64_t u64;
|
||||
typedef float f32;
|
||||
typedef double f64;
|
||||
typedef void* ptr;
|
||||
|
||||
#if !__cplusplus
|
||||
typedef u8 bool;
|
||||
@ -33,7 +34,7 @@ typedef const char* cstr;
|
||||
|
||||
#define nameof(V) #V
|
||||
|
||||
#define ARRAY_SIZE(A) (sizeof(A)/sizeof(A[0]))
|
||||
#define ARRAY_LEN(A) (sizeof(A)/sizeof(A[0]))
|
||||
#define ALIGN_TO(_SIZE,_ALIGN) (((_SIZE) + ((_ALIGN) - 1)) & ~((_ALIGN) - 1))
|
||||
|
||||
#if defined(_WIN64) || defined(_WIN32)
|
||||
|
||||
@ -21,7 +21,7 @@ void StringBuilder_append_str(StringBuilder* b, str s);
|
||||
void StringBuilder_append_i64(StringBuilder* b, i64 a);
|
||||
void StringBuilder_append_u64(StringBuilder* b, u64 a);
|
||||
void StringBuilder_append_f64(StringBuilder* b, f64 a);
|
||||
void StringBuilder_append_memory(StringBuilder* b, Array mem);
|
||||
void StringBuilder_append_memory(StringBuilder* b, Array mem, bool uppercase);
|
||||
|
||||
// adds '\0' to the buffer and returns pointer to buffer content
|
||||
str StringBuilder_getStr(StringBuilder* b);
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
#include "../std.h"
|
||||
#include "char.h"
|
||||
#include "cstr.h"
|
||||
#include "../collections/Array.h"
|
||||
|
||||
typedef struct str {
|
||||
char* data;
|
||||
@ -11,7 +12,7 @@ typedef struct str {
|
||||
} str;
|
||||
|
||||
/// creates str from a string literal
|
||||
#define STR(LITERAL) str_construct(LITERAL, ARRAY_SIZE(LITERAL) - 1, true)
|
||||
#define STR(LITERAL) str_construct(LITERAL, ARRAY_LEN(LITERAL) - 1, true)
|
||||
|
||||
#define str_construct(DATA, LEN, ZERO_TERMINATED) ((str){ .data = DATA, .size = LEN, .isZeroTerminated = ZERO_TERMINATED })
|
||||
|
||||
@ -41,3 +42,5 @@ u32 str_hash32(str s);
|
||||
|
||||
str str_toUpper(str src);
|
||||
str str_toLower(str src);
|
||||
|
||||
str hex_to_str(Array buf, bool uppercase);
|
||||
@ -55,13 +55,13 @@ void StringBuilder_append_f64(StringBuilder* b, f64 n){
|
||||
StringBuilder_append_cstr(b, buf);
|
||||
}
|
||||
|
||||
void StringBuilder_append_memory(StringBuilder* b, Array mem) {
|
||||
void StringBuilder_append_memory(StringBuilder* b, Array mem, bool uppercase) {
|
||||
if(mem.data == NULL)
|
||||
return;
|
||||
|
||||
char buf[8];
|
||||
for (u32 i=0; i < mem.size; i++) {
|
||||
sprintf(buf, "%02x", ((u8*)mem.data)[i]);
|
||||
sprintf(buf, uppercase ? "%02X" : "%02x", ((u8*)mem.data)[i]);
|
||||
StringBuilder_append_str(b, str_construct(buf, 2, true));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
#include "string/str.h"
|
||||
#include "string/StringBuilder.h"
|
||||
|
||||
str str_copy(str src){
|
||||
if(src.data == NULL || src.size == 0)
|
||||
@ -123,3 +124,9 @@ str str_toLower(str src){
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
str hex_to_str(Array buf, bool uppercase){
|
||||
StringBuilder sb = StringBuilder_alloc(buf.size * 2 + 1);
|
||||
StringBuilder_append_memory(&sb, buf, uppercase);
|
||||
return StringBuilder_getStr(&sb);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user