[英]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;
};`
如果input
是1e
則hex
是0x1e
,我稍后想連接,所以如果下一個input
是ff
我希望輸出是0x1eff
一些筆記
fgetc
的返回值以確定何時到達文件末尾。 請參閱while-feof-file-is-always-wrong 。fgetc
返回一個int
而不是char
。 原因是您可以檢測何時返回EOF
。int
直到int
已滿。 在 32 位系統上,一個int
只有 4 個字節,所以你只能這樣做 4 次。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.