Summary Files Commits Branches @commit @diff @stats
path: root / Year 1 / Object-oriented Programming / Solutions Sem. 03 / ex4 / Bytex.cpp
blob: bc2bee61753036bffd15a75ec0987d6fddc74491 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "Bytex.h"

/* Private functions */

char Bytex::digitToHexChar(int digit) {
	if (digit < 10)
		return '0' + digit;
	return 'A' + digit - 10;
}

int Bytex::hexCharToNum(char hexChar) {
	if (hexChar <= '9')
		return hexChar - '0';
	return hexChar - 'A' + 10;
}

void Bytex::byteValToHex() {
	int front = byteVal / 16, back = byteVal % 16;
	hexVal[0] = digitToHexChar(front);
	hexVal[1] = digitToHexChar(back);
}

void Bytex::hexValToByte() {
	byteVal = hexCharToNum(hexVal[0]) * 16 + hexCharToNum(hexVal[1]);
}

/* Public functions */

Bytex::Bytex() : Bytex('\0')
{}

Bytex::Bytex(char byteVal) {
	this->byteVal = byteVal;
	byteValToHex();
}

Bytex::Bytex(const char* hexVal) {
	this->hexVal[0] = hexVal[0];
	this->hexVal[1] = hexVal[1];
	hexValToByte();
}

char Bytex::getByte() const {
	return byteVal;
}

void Bytex::getHex(char* output) const {
	output[0] = hexVal[0];
	output[1] = hexVal[1];
}