#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys\stat.h>
#include <io.h>
int
main()
{
int i;
unsigned char str[20];
int in, bytes;
int a, b, sum = 0;
memset(str, 0, sizeof(str));
if ((in = open("readme", O_RDONLY | O_BINARY, S_IWRITE | S_IREAD)) == -1)
{
printf("Error while opening input!\n");
exit(1);
}
if ((bytes = read(in, str, 10)) == -1)
{
printf("Read Failed.\n");
exit(1);
}
else
{
printf("Read: %d bytes read.\n", bytes);
}
printf("STR: %s\n", str);
for (i = bytes-1, b = 1; i > -1; i--, b *= 256 )
{
a = str;
sum += a*b;
printf("%d. %d -> %d\n", i, a, sum);
}
return 0;
}
Как сконвертить бинарные данные
Файл data.txt содержит бинарные данные. Это число. В hex-е оно как 061A80. Как получить это число в десятичном виде (должно быть 400000)? Известно, что расчет должен строиться на: 06 - 6, 1A - 26, 80 - 128, тогда 6*256*256+26*256+128 = 400000. Как средствами C сконвертить 06 в 6, 1A в 26, 80 в 128?
atoi - строку в число,
а itoa - число в строку
Обрать внимание на параметр radix
Для пацанов, кто столкнется с этой проблемой:
Код:
undigned int value = 0;
for (i = 0; i < bytes ; ++i )
value = (value<<8) + str;
for (i = 0; i < bytes ; ++i )
value = (value<<8) + str;