簡體   English   中英

如何使用C在char中存儲8位

[英]how to store 8 bits in char using C

我的意思是,如果我想存儲例如11110011我想將它存儲在內存中的1個字節而不是字符數組中。

例如:如果我在使用scanf時寫入10001111作為輸入,它只獲取第一個1並將其存儲在變量中,而我想要的是將整個值放入char類型的變量中,只消耗一個字節的內存。

寫下來的一種方法是這樣的:

unsigned char b = 1 << 7 |
                  1 << 6 |
                  1 << 5 |
                  1 << 4 |
                  0 << 3 |
                  0 << 2 |
                  1 << 1 |
                  1 << 0;

這是從字符串中讀取它的片段:

int i;
char num[8] = "11110011";
unsigned char result = 0;

for ( i = 0; i < 8; ++i )
    result |= (num[i] == '1') << (7 - i);

像這樣....

unsigned char mybyte = 0xF3;

使用“位字段”?

#include <stdio.h>

union u {
   struct {
   int a:1;
   int b:1;
   int c:1;
   int d:1;
   int e:1;
   int f:1;
   int g:1;
   int h:1;
   };
   char ch;
};

int main()
{
   union u info;
   info.a = 1; // low-bit
   info.b = 1;
   info.c = 0;
   info.d = 0;
   info.e = 1;
   info.f = 1;
   info.g = 1;
   info.h = 1; // high-bit
   printf("%d %x\n", (int)(unsigned char)info.ch, (int)(unsigned char)info.ch);
}

您需要計算數字,然后將其存儲在char中。

如果您知道二進制如何工作,這對您來說應該很容易。 我不知道你是如何存儲二進制數據的,但如果它是一個字符串,你需要經歷它並為每個1添加適當的2的冪來臨時變量(首先初始化為零)。 這將在您完成整個陣列后產生數字。

請看這里: http//www.gidnetwork.com/b-44.html

使用unsigned char,然后將值存儲在其中。 簡單?

如果你從一個文件中讀取它並且它是一個字符串的形式,那么這樣的東西應該工作:

char str[] = "11110011";
unsigned char number = 0;

for(int i=7; i>=0; i--)
{
    unsigned char temp = 1;
    if (str[i] == '1')
    {
        temp <<= (7-i);
        number |= temp;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM