mirror of
https://github.com/jakcron/nstool.git
synced 2024-12-22 10:45:28 +00:00
[fnd] Add SimpleTextOutput utility class.
This commit is contained in:
parent
bafdaffe13
commit
2ff4ea8037
18
lib/libfnd/include/fnd/SimpleTextOutput.h
Normal file
18
lib/libfnd/include/fnd/SimpleTextOutput.h
Normal file
|
@ -0,0 +1,18 @@
|
|||
#pragma once
|
||||
#include <fnd/types.h>
|
||||
|
||||
namespace fnd
|
||||
{
|
||||
class SimpleTextOutput
|
||||
{
|
||||
public:
|
||||
static void hxdStyleDump(const byte_t* data, size_t len, size_t row_len, size_t byte_grouping_size);
|
||||
static void hxdStyleDump(const byte_t* data, size_t len);
|
||||
static void hexDump(const byte_t* data, size_t len, size_t row_len, size_t indent_len);
|
||||
static void hexDump(const byte_t* data, size_t len);
|
||||
private:
|
||||
static const size_t kDefaultRowLen = 0x10;
|
||||
static const size_t kDefaultByteGroupingSize = 1;
|
||||
};
|
||||
|
||||
}
|
61
lib/libfnd/source/SimpleTextOutput.cpp
Normal file
61
lib/libfnd/source/SimpleTextOutput.cpp
Normal file
|
@ -0,0 +1,61 @@
|
|||
#include <fnd/SimpleTextOutput.h>
|
||||
#include <cstdio>
|
||||
|
||||
void fnd::SimpleTextOutput::hxdStyleDump(const byte_t* data, size_t len, size_t row_len, size_t byte_grouping_size)
|
||||
{
|
||||
// iterate over blocks
|
||||
for (size_t i = 0; i < (len / row_len); i++)
|
||||
{
|
||||
// for block i print each byte
|
||||
for (size_t j = 0; j < row_len; j++)
|
||||
{
|
||||
printf("%02X", data[(i * row_len) + j]);
|
||||
if (((j+1) % byte_grouping_size) == 0)
|
||||
{
|
||||
putchar(' ');
|
||||
}
|
||||
}
|
||||
printf(" ");
|
||||
for (size_t j = 0; j < row_len; j++)
|
||||
{
|
||||
printf("%c", isalnum(data[(i * row_len) + j]) ? data[(i * row_len) + j] : '.');
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
void fnd::SimpleTextOutput::hxdStyleDump(const byte_t* data, size_t len)
|
||||
{
|
||||
hxdStyleDump(data, len, kDefaultRowLen, kDefaultByteGroupingSize);
|
||||
}
|
||||
|
||||
void fnd::SimpleTextOutput::hexDump(const byte_t* data, size_t len, size_t row_len, size_t indent_len)
|
||||
{
|
||||
for (size_t i = 0; i < len; i++)
|
||||
{
|
||||
if ((i % row_len) == 0)
|
||||
{
|
||||
if (i > 0)
|
||||
putchar('\n');
|
||||
for (size_t j = 0; j < indent_len; j++)
|
||||
{
|
||||
putchar(' ');
|
||||
}
|
||||
}
|
||||
printf("%02X", data[i]);
|
||||
if ((i+1) >= len)
|
||||
{
|
||||
putchar('\n');
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void fnd::SimpleTextOutput::hexDump(const byte_t* data, size_t len)
|
||||
{
|
||||
for (size_t i = 0; i < len; i++)
|
||||
{
|
||||
printf("%02X", data[i]);
|
||||
}
|
||||
putchar('\n');
|
||||
}
|
Loading…
Reference in a new issue