[C언어/C++] 데이터 단위변환 : Bytes → Kilobyte(KB) → Megabyte(MB) → Terabyte(TB) - Converting bytes to human readable values(Bytes, KB, MB, GB, TB) in C
안녕하세요 JollyTree입니다 (•̀ᴗ•́)و
바이트를 킬로바이트, 메가바이트, 테라바이트로 변환하는 예제입니다. 코드가 정상적으로 동작하는지 확인하기 위해 하드 코딩된 testBytes[] 배열을 선언하여 테스트 데이터를 구성하였습니다. 바이트 수를 직접 입력하여 변환된 결과를 확인 할 수도 있습니다.
큰 수의 바이트는 사람이 읽기 어려우므로 입력한 바이트의 크기에 따라 자동으로 KB, MB, GB, TB로 변환하여 보여주도록 하였습니다.
단위변환 테스트: 576 바이트: 576.00 B 1500 바이트: 1.46 KB 1548576 바이트: 1.48 MB 1173741824 바이트: 1.09 GB 1099511627776 바이트: 1.00 TB 1225899906842624 바이트: 1114.95 TB >> 바이트 수를 직접 입력하세요: 99991225899906842624 >> 99991225899906842624 바이트: 90941490.18 TB >> 바이트 수를 직접 입력하세요: 987654321000000 >> 987654321000000 바이트: 898.27 TB >> 바이트 수를 직접 입력하세요: 5000000000 >> 5000000000 바이트: 4.66 GB |
🔗 단위변환 예제(Example): 바이트(Bytes) ▷ 킬로바이트(KB) ▷ 메가바이트(MB) ▷ 테라바이트(TB)
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
51
52
53
54
55
56
57
58
59
60
|
#include <stdio.h>
char* convertData(double bytes)
{
static char retBuf[256] = "";
const char* dataUnit[] = { "B", "KB", "MB", "GB", "TB" };
double retBytes = 0;
int i = 0;
retBytes = bytes;
if (bytes > 1024)
{
for (i = 0; ((bytes / 1024) >= 1); i++)
{
if (i == 4)
break;
retBytes = bytes / 1024.0;
bytes /= 1024.0;
}
}
sprintf(retBuf, "%.2lf %s", retBytes, dataUnit[i]);
return retBuf;
}
int main(void)
{
double testBytes[] = {
//Bytes
576,
//KB
1500,
// MB (1024 * 1024 + 500000)
1048576+500000,
//GB (1024 * 1024 * 1024 + 100000000)
1073741824 + 100000000,
//TB (1024 * 1024 * 1024 * 1024)
1099511627776,
//1024TB (1024 * 1024 * 1024 * 1024 * 1024 + 100000000000000)
1125899906842624 + 100000000000000 };
int i ;
printf("단위변환 테스트:\n\n");
for (i = 0; i < sizeof(testBytes) / sizeof(double); i++)
printf("%.0lf 바이트: %s\n", testBytes[i], convertData(testBytes[i]));
double n;
while (1)
{
printf("\n >> 바이트 수를 직접 입력하세요: ");
scanf("%lf", &n);
if (n == 0)
break;
printf(" >> %.0lf 바이트: %s\n", n, convertData(n));
}
return 0;
}
|
cs |
🔗 실행결과(Output):
이상 JollyTree였습니다. (•̀ᴗ•́)و