mirror of
https://github.com/Ed94/metadesk.git
synced 2026-08-06 15:48:47 +00:00
hand written c-style hex string from integer
This commit is contained in:
+5
-3
@@ -774,9 +774,11 @@ MD_FUNCTION MD_String8 MD_PathChopLastSlash(MD_String8 string);
|
|||||||
|
|
||||||
//~ Numeric Strings
|
//~ Numeric Strings
|
||||||
|
|
||||||
MD_FUNCTION MD_u64 MD_U64FromString(MD_String8 string, MD_u32 radix);
|
MD_FUNCTION MD_u64 MD_U64FromString(MD_String8 string, MD_u32 radix);
|
||||||
MD_FUNCTION MD_i64 MD_CStyleIntFromString(MD_String8 string);
|
MD_FUNCTION MD_i64 MD_CStyleIntFromString(MD_String8 string);
|
||||||
MD_FUNCTION MD_f64 MD_F64FromString(MD_String8 string);
|
MD_FUNCTION MD_f64 MD_F64FromString(MD_String8 string);
|
||||||
|
|
||||||
|
MD_FUNCTION MD_String8 MD_CStyleHexStringFromU64(MD_u64 x, MD_b32 caps);
|
||||||
|
|
||||||
//~ Enum/Flag Strings
|
//~ Enum/Flag Strings
|
||||||
|
|
||||||
|
|||||||
+41
-2
@@ -893,6 +893,45 @@ MD_F64FromString(MD_String8 string)
|
|||||||
return(atof(str));
|
return(atof(str));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MD_FUNCTION_IMPL MD_String8
|
||||||
|
MD_CStyleHexStringFromU64(MD_u64 x, MD_b32 caps)
|
||||||
|
{
|
||||||
|
static char md_int_value_to_char[] = "0123456789abcdef";
|
||||||
|
MD_u8 buffer[10];
|
||||||
|
MD_u8 *opl = buffer + 10;
|
||||||
|
MD_u8 *ptr = opl;
|
||||||
|
if (x == 0){
|
||||||
|
ptr -= 1;
|
||||||
|
*ptr = '0';
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
for (;;){
|
||||||
|
MD_u32 val = x%16;
|
||||||
|
x /= 16;
|
||||||
|
MD_u8 c = (MD_u8)md_int_value_to_char[val];
|
||||||
|
if (caps){
|
||||||
|
c = MD_CharToUpper(c);
|
||||||
|
}
|
||||||
|
ptr -= 1;
|
||||||
|
*ptr = c;
|
||||||
|
if (x == 0){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ptr -= 1;
|
||||||
|
*ptr = 'x';
|
||||||
|
ptr -= 1;
|
||||||
|
*ptr = '0';
|
||||||
|
|
||||||
|
MD_String8 result = MD_ZERO_STRUCT;
|
||||||
|
result.size = (MD_u64)(ptr - buffer);
|
||||||
|
result.str = MD_PushArray(MD_u8, result.size);
|
||||||
|
MD_MemoryCopy(result.str, buffer, result.size);
|
||||||
|
return(result);
|
||||||
|
}
|
||||||
|
|
||||||
//~ Enum/Flag Strings
|
//~ Enum/Flag Strings
|
||||||
|
|
||||||
MD_FUNCTION_IMPL MD_String8
|
MD_FUNCTION_IMPL MD_String8
|
||||||
@@ -1861,11 +1900,11 @@ MD_ParseOneNode(MD_String8 string, MD_u64 offset)
|
|||||||
switch (bad_token.kind){
|
switch (bad_token.kind){
|
||||||
case MD_TokenKind_BadCharacter:
|
case MD_TokenKind_BadCharacter:
|
||||||
{
|
{
|
||||||
// TODO(allen): tighten up with good integer <-> string helpers
|
|
||||||
MD_String8List bytes = {0};
|
MD_String8List bytes = {0};
|
||||||
for(int i_byte = 0; i_byte < bad_token.raw_string.size; ++i_byte)
|
for(int i_byte = 0; i_byte < bad_token.raw_string.size; ++i_byte)
|
||||||
{
|
{
|
||||||
MD_S8ListPush(&bytes, MD_S8Fmt("0x%02X", bad_token.raw_string.str[i_byte]));
|
MD_u8 b = bad_token.raw_string.str[i_byte];
|
||||||
|
MD_S8ListPush(&bytes, MD_CStyleHexStringFromU64(b, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
MD_StringJoin join = MD_ZERO_STRUCT;
|
MD_StringJoin join = MD_ZERO_STRUCT;
|
||||||
|
|||||||
Reference in New Issue
Block a user