如何将二进制数组转换为单个变量?

时间:2018-04-14 08:25:14

标签: c for-loop binary

我有一个二进制数组,我试图将其转换为单个变量,以便我可以连续按位读取二进制数。我已经尝试循环遍历数组并将它们中的每一个添加到变量中但这不起作用。谁能给我一些指导如何做到这一点?

这就是我的尝试:

    char* filename = vargs[1];
    BYTE buffer[BUFFER_SIZE];
    FILE *file_ptr = fopen(filename,"rb");

    fseek(file_ptr, 0, SEEK_END); 
    size_t file_length = ftell(file_ptr);
    rewind(file_ptr);  

    fread(buffer, sizeof(BYTE), BUFFER_SIZE, file_ptr);

    char binaryLine = '\0';

    for (int i = 0; i > file_length; i++)
    {
        binaryLine += buffer[i];
        printf("%d ", (int)buffer[i]);
    }

1 个答案:

答案 0 :(得分:0)

也许有一些不理解,但是当你在char *或char []中读取文件时,这是一个变量。 也许尝试下面的代码,看看你错过了什么。

注意,仅举几例:

  • for指示,需要继续
  • fread你需要获取读取的字节数来循环它
  • main,它是一个功能或它的主要功能,显示它
  • fopen等,也会让你检查错误,这可能会帮助你弄清楚为什么某些东西不起作用

关于你的问题,提问和提供信息非常重要,正如其他评论中所述,你想要什么......

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

int main(int argc, const char * argv[]) {

   const char* filename = argv[1];
   char * buffer=NULL;

   FILE *file_ptr = fopen(filename,"rb");

   if (! file_ptr) return 1;

   fseek(file_ptr, 0, SEEK_END);
   size_t file_length = ftell(file_ptr);
   rewind(file_ptr);

   if (file_length!=0)
      buffer=calloc(1,file_length);
   if (buffer)
   {
      size_t bytes_read=fread(buffer, 1, file_length, file_ptr);
      for (int i = 0; i < bytes_read; i++)
      {
         printf("%d ", (int)buffer[i]);
      }
      free(buffer);
      buffer=NULL;
      return 0;
   }
   return 1;
}