將十六進製制資料轉換成有符號十進位制數

2021-08-01 16:50:53 字數 1922 閱讀 3705

方法一:

#define _read_hexadecimal_data_

#define hexadecimal_row_num 32

void main()

#endif

}int16 translatedata(const char *buff)

else

temp = (int32)(pow(16.0, i));

idata += tempnum * (temp);

//按照按位計數制,計算數值 }

if(idata > 0x7fff)

return idata;

}表1 符號-數值與2的補碼表示

4位符號數值表示

4位補碼表示

70111

70111

60110

60110

50101

50101

40100

40100

30011

30011

20010

20010

10001

10001

+00000

00000

-01000

-11111

-11001

-21110

-21010

-31101

-31011

-41100

-41100

-51011

-51101

-61010

-61110

-71001

-71111

-81000

/*練習2-3 編寫函式htoi(s),將十六進製制數字組成的字串(包含可選的字首0x或0x)轉換為與之等價的整型值。

字串允許包含的數字包括:0~9、a~f、a~f。*/

[html]

view plaincopy

#include 

int htoi(char s);  

int main()  

int htoi(char s)  

if((s[i]

>='0'&&s[i]

<='9'))  

else if (s[i]

>='a'&&s[i]

<='f')  

else if (s[i]

>='a'&&s[i]

<='f')  

}  return n;  

}  >

int htoi(const char *s)

int n = 0;

while( *s )

return n; }

int main(int argc, char* argv)

>

方法三:直接處理乙個數的補碼,計算得到有符號十進位制數

(1)拼接字元。把兩個無符號的字元,拼接成乙個有符號的十進位制數,方法是:將高位的字元左移8位,然後位或低8位的字元。

(2)判斷符號。單獨提取最高位的位。方法:要提取的變數位與0x8000

(3)將補碼表示的負數,轉成有符號的十進位制數。方法:要轉換的變數先減1,再反轉所有位(

反轉所有位的意思是每乙個0變為1,每乙個1變為0),然後提取除了最高位之外的所有位,最後在變數前面加上負號(-)。

總結: 按位轉換有符號十進位制數最簡單的演算法是反轉所有位,然後加1。上面的**實現跟這個最簡單的演算法在轉換原理上是一致的。

將十六進製制色值轉換成Color

在給background賦值時,除了自帶的red,blue,black等,可以通過以下方法賦予其他顏色。主要是將hex轉換成argb a alpha,表示透明度 r red g green b blue 其中argb取值均在0 255之間 該方法傳入的字串引數可以類似 21459a 或者 ff214...

十六進製制轉換成八進位制

第一次發部落格,若寫的不好,希望大家多提下意見 乙個簡單的進製轉換的問題 十六進製制轉換成八進位制 思想 先把十六進製制的數轉成二進位制,然後再把二進位制的數轉成八進位制 include include using namespace std string hextobin string hex 十...

十六進製制轉換成十進位制 二進位制

十六進製制轉二進位制 public string htob string a 二進位制轉十六進製制 public string btoh string a 任意進製數轉為十進位制數 public string tod string a,int b return string.valueof r 將十...