0

我正在滚动一个字符文件并将其数据保存到一个数组中。该文件如下所示: http: //pastebin.com/dx4HetT0

我已经删除了标题信息,所以它实际上是一个带有数字的文本文件。我想在我的程序中将这些 char 数字转换为字节,这样我就可以对它们进行一些转换数学运算。

我的代码如下:

#include <stdio.h>
#include <stdlib.h>

#include "../DataProcessing/include/packet.h"

int main ( int argc, char *argv[] )
{
    /*
    // We assume argv[1] is a filename to open
    FILE *file = fopen( argv[1], "r" );
    */

    FILE *file = fopen("C:\\log_hex.txt", "r");

    /* fopen returns 0, the NULL pointer, on failure */
    if ( file == 0 )
    {
        printf( "Could not open file\n" );
    }
    else 
    {
        int x;
        int count = 0;
        int byteArray[99999];
        /* read one character at a time from file, stopping at EOF, which
           indicates the end of the file.  Note that the idiom of "assign
           to a variable, check the value" used below works because
           the assignment statement evaluates to the value assigned. */
        while  ( ( x = fgetc( file ) ) != EOF )
        {
            byteArray[count] = x;
            printf( "%c", x );
            count++;
        }
        fclose( file );
        getchar();
    }
}

byteArray 被字符填充,但不是以我想要的方式填充 - 我得到一个字符 0,表示为数值 53,4 表示为 52,空格表示为 32....我如何读取字符编号,并使该数字成为我的 byteArray 中的 char 值?

4

2 回答 2

0

您正在读取 ascii 中的字节值。您需要使用库函数,例如strtol转换为实际值。

虽然我认为你的问题中有一个错字 - 我怀疑0是出来的53,那是 ascii3

如果你知道它是一个数字,你可以做

x-='0';

获得价值。

于 2013-08-08T14:28:39.910 回答
0

请注意,您将 char 值存储在整数数组中。此外,您正在以 char 格式打印整数值。

由于您的输入文件中有多个数字,您可能需要一个字符缓冲区来存储整个数字(一系列数字,例如读取数字字符,直到您读取一个空格)。之后,您需要使用 strtol 将缓冲区转换为整数,如前所述。

要测试您的结果,请确保在 printf 中使用正确的格式。用于"%d"整数、"%c"字符等。

于 2013-08-08T14:39:26.377 回答