绝对不卡福利网站|中文字幕在笑第一页|午夜福利中文字幕首页|久久精彩视频免费观看

  • <abbr id="lczsv"></abbr>
    <blockquote id="lczsv"></blockquote>

    <track id="lczsv"><table id="lczsv"><nobr id="lczsv"></nobr></table></track>
    • c語言中怎么把一個(gè)字節(jié)擴(kuò)展成2字節(jié)(c語言中怎么把一個(gè)字節(jié)擴(kuò)展成2字節(jié))

      2024-12-14 百科 86閱讀 投稿:逆風(fēng)昊

      1. c語言中怎么把一個(gè)字節(jié)擴(kuò)展成2字節(jié)

      沒有現(xiàn)成的方法, 自己寫代碼轉(zhuǎn)換

      #include

      // 調(diào)用時(shí)請(qǐng)保證t有不小于2*slen的空間

      void b2w(const unsigned char *s, int slen, unsigned char *t)

      {

      unsigned char b;

      for (int i=0; i>1) & 0x20) | ((b>>2) & 0x08) | ((b>>3) & 0x02);

      *t++ = (b>>1) | b;

      b = s[i] & 0x0F;

      b = (b & 0x01) | ((b>=1;

      }

      putchar(' ');

      }

      putchar('/n');

      }

      void main()

      {

      unsigned char s[] = {0x82, 0x41, 0xCB};

      unsigned char t[sizeof(s)*2] = {0x00};

      b2w(s, sizeof(s)/sizeof(s[0]), t);

      showbytes(s, sizeof(s)/sizeof(s[0]));

      showbytes(t, sizeof(t)/sizeof(t[0]));

      }

      2. c語言中怎么把一個(gè)字節(jié)擴(kuò)展成2字節(jié)

      沒有現(xiàn)成的方法, 自己寫代碼轉(zhuǎn)換#include // 調(diào)用時(shí)請(qǐng)保證t有不小于2*slen的空間void b2w(const unsigned char *s, int slen, unsigned char *t){ unsigned char b; for (int i=0; i { b = s[i] & 0xF0; b = (b & 0x80) | ((b>>1) & 0x20) | ((b>>2) & 0x08) | ((b>>3) & 0x02); *t++ = (b>>1) | b; b = s[i] & 0x0F; b = (b & 0x01) | ((b *t++ = (b }}// 按二進(jìn)制顯示字節(jié)數(shù)組void showbytes(unsigned char *s, int slen){ for (int i=0; i { unsigned char b = 0x80; for (int k=0; k { putchar((b&s[i])? '1': '0'); b>>=1; } putchar(' '); } putchar('/n');}void main(){ unsigned char s[] = {0x82, 0x41, 0xCB}; unsigned char t[sizeof(s)*2] = {0x00}; b2w(s, sizeof(s)/sizeof(s[0]), t); showbytes(s, sizeof(s)/sizeof(s[0])); showbytes(t, sizeof(t)/sizeof(t[0]));}。

      3. C語言中數(shù)組怎么把任意兩個(gè)單字節(jié)的字符變成一個(gè)雙字節(jié)的字符

      // 題主這個(gè)問題嘛,問的很有問題

      // 計(jì)算機(jī)一般有兩種文字儲(chǔ)存方式,寬字節(jié)+多字節(jié)

      // 寬字節(jié):用2或4個(gè)字節(jié)表示一個(gè)字(每種類型固定字節(jié)長(zhǎng)度)

      // USC-2, USC-4

      // 多字節(jié):用1到4個(gè)字節(jié)表示一個(gè)字(每種字用的字節(jié)不一樣)

      // GBK, BIG5, UTF-8

      兩個(gè)單字節(jié)變?yōu)橐粋€(gè)雙字節(jié),意味著這兩個(gè)單字節(jié)其實(shí)是一個(gè)雙字節(jié)能表達(dá)的字符的分別字節(jié)?

      // 假設(shè)是這樣的

      /* 以GBK為例子,嗯,微軟默認(rèn)控制臺(tái)內(nèi)碼為GBK */

      比如“我”字,你得先查到內(nèi)碼為:CED2

      從下面可以查。.當(dāng)然百度一下到處都是

      /classcode/tools/encode_gb2312.asp

      // 然后發(fā)現(xiàn),這個(gè)是多字節(jié)編碼,所以不考慮大小端

      unsigned char a[3];

      a[0] = 0xCE; a[1] = 0xD2; a[3] = 0x0;

      printf(a); 就可以了

      /* 以USC-2為例子 */

      查到“我”編碼是0x6211

      考慮到intel處理器都是小端(與我大摩托羅拉對(duì)著干)

      unsigned char a[4];

      a[0] = 0x11; a[1] = 0x62; a[2] = 0x0; a[3] = 0x0;

      wprintf((wchar_t *)a); 就可以了

      4. c語言中如何將十六進(jìn)制轉(zhuǎn)換成2個(gè)字節(jié)輸出

      MSGLEGTH = 0x9001;

      如果轉(zhuǎn)換成char*字符串形式,內(nèi)存中保存是什么數(shù)據(jù)呢 例如有可能是 0x00 0x00 0x90 0x01,

      這樣轉(zhuǎn)換的字符可能就是 0x00 0x00 這樣肯定打印不出來,即使是0x90,0x01也是不可見字符。

      LZ希望打印出9001吧。其實(shí)先建立個(gè)16進(jìn)制的表

      char hex[]= {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};

      然后一位一位解析

      例如 int i = 78908 16進(jìn)制 0x1343c

      int j;

      第一個(gè)字節(jié)

      j = 78908 %16;

      可以輸出hex[j];

      i = i /16;

      以此類推,把前面的字符取出來。

      5. 在C語言中怎么把一個(gè)數(shù)轉(zhuǎn)換成二進(jìn)制然后輸出

      數(shù)據(jù)在內(nèi)存中本來就是以二進(jìn)制補(bǔ)碼存放的,設(shè)法從高字節(jié)至低字節(jié)一個(gè)bit一個(gè)bit地輸出到屏幕上即可。根據(jù)題面要求,輸出過程還要做以下工作:

      從最高字節(jié)開始檢測(cè),全0的字節(jié)略去;

      每8位增加輸出一個(gè)空格。

      代碼如下:

      12345678910111213141516//#include "stdafx.h"http://If the vc++6.0, with this line.#include "stdio.h"int main(void){ char *p; unsigned i,n,x=1<<sizeof(int)*8-1; printf("Input an integer。/n"); scanf("%d",&n); for(p=(char *)&n,i=sizeof(int)-1;i>0;i--) if(*(p+i)==0) x>>=8; else break; for(i=0;x;x>>=1) printf(++i%8 ? "%d" : "%d ",(n&x) || 0); printf("/n"); return 0;}

      6. C語言中,如何將一個(gè)整形拆分成兩個(gè)Byte

      Word2Byte(unsigned short n)

      {

      printf("%u: Low byte=0x%02X, high byte=0x%02X./n", n, n>>8, n&255);

      }

      或:

      Word2Byte(unsigned short n)

      {

      unsigned byte num_l, num_h;

      num_l = n & 255;

      num_h = n >>8;

      printf("%u: Low byte=0x%02X, high byte=0x%02X./n", n, num_h, num_h);

      }

      7. C語言中每個(gè)存儲(chǔ)單元是幾個(gè)字節(jié),它由幾個(gè)二進(jìn)制位構(gòu)成

      計(jì)算機(jī)存儲(chǔ)單元以字節(jié)(BYTE)為單位,一個(gè)字節(jié) 由 8個(gè) 字元(bit),也就是 8個(gè) 二進(jìn)制位 構(gòu)成。

      一個(gè) int , float, double 。. 需幾個(gè)字節(jié)存放,可以用 sizeof(int), sizeof(float), sizeof(double) 。計(jì)算。例如:

      printf("int -- %d bytes/n",sizeof(int) );

      printf("float -- %d bytes/n",sizeof(float) );

      聲明:沿途百知所有(內(nèi)容)均由用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流。若您的權(quán)利被侵害,請(qǐng)聯(lián)系我們將盡快刪除