簡體   English   中英

將十六進制從 unsigned char 二進制轉換為 int

[英]Binary converting hex from unsigned char to int

我可能會問一個重復的問題,但似乎找不到它。

如何將十六進制表示從 unsigned char 中的1e轉換為 int (非 unsigned )中的0x1e

並連接它們我需要

hex3 = (hex1 << 8) | hex2;

如果我想一遍又一遍地做,我可以這樣做嗎?

hex3 = (hex3 << 8) | hex2;

抱歉,這些可能真的是問題,但我似乎無法理解二進制操作:(

編輯:所以..我可以這樣做嗎?

int hex;
while (!feof(in))
{ 
   unsigned char input = fgetc(in);
  hex = hex + input;
};`

如果input1ehex0x1e ,我稍后想連接,所以如果下一個inputff我希望輸出是0x1eff

一些筆記

  1. 您需要檢查fgetc的返回值以確定何時到達文件末尾。 請參閱while-feof-file-is-always-wrong
  2. fgetc返回一個int而不是char 原因是您可以檢測何時返回EOF
  3. 您只能將字節移入int直到int已滿。 在 32 位系統上,一個int只有 4 個字節,所以你只能這樣做 4 次。
  4. C 沒有十六進制數和十進制數,它只有一個存儲數字的int類型。 printf函數可用於以十六進制或十進制顯示int 要以十進制顯示數字,請使用printf("%d",n) ,要以十六進制顯示數字,請使用printf("%x",n)

考慮到這一點,下面是我將如何編寫代碼。 (我假設一個int是 4 個字節,並且文件中有 4 個或更少的字節。)

int number = 0;
int c;
while ( (c = fgetc(in)) != EOF )
    number = (number << 8) | (c & 0xff);

printf( "%x\n", number );

暫無
暫無

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

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