線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:7577
推到 Plurk!
推到 Facebook!

16進位的問題

答題得分者是:syntax
brent77622
一般會員


發表:2
回覆:3
積分:1
註冊:2009-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-07-28 16:00:28 IP:203.64.xxx.xxx 訂閱
請問宣告16進位要用啥宣告阿
例如說 我輸入 AB
我希望他會變成 0xAB

謝謝

----------------------------------------------------
不好意思 我沒說清楚
今天有一個記事本 裡面有段文字 "12AB" 並且抓取文件裡的文字
之後我希望能把 12 轉換成 0x12
AB 轉換成 0xAB
存成兩個變數 並可以讓我使用

感謝!!!!!!!!!
編輯記錄
brent77622 重新編輯於 2009-07-30 14:15:37, 註解 無‧
brent77622 重新編輯於 2009-07-30 14:31:47, 註解 無‧
ikk
尊榮會員


發表:4
回覆:413
積分:768
註冊:2003-06-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-07-30 09:50:36 IP:163.28.xxx.xxx 訂閱
是不是16進位, 只是顯示問題
int value;
value = 16;

printf("%d", value); --> 顯示16
printf("%x", value);--> 顯示 f
------
FPGA驗證, FPGA開發平台, http://smims.com
zhgwbzhd
一般會員


發表:10
回覆:32
積分:18
註冊:2008-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-08-03 10:40:24 IP:221.218.xxx.xxx 未訂閱
有很多16進製轉成10進製的方法。

讀到一個字符串之后。
可以利用循環操作。

如果知道字符串的長度,那就更簡單暸。

int i,j;

i=0;
循環結搆

if(要判斷的字符 >='0' && 要判斷的字符 <='9')
j=要判斷的字符 - '0';
else if(要判斷的字符 >= 'A' && 要判斷的字符 <='F')
j=10 要判斷的字符 - 'A';
else//出錯,可以出錯
j=0;

i=i*16 j。

結束循環
brent77622
一般會員


發表:2
回覆:3
積分:1
註冊:2009-07-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-08-04 19:48:11 IP:218.165.xxx.xxx 訂閱

===================引 用 zhgwbzhd 文 章===================
有很多16進製轉成10進製的方法。

讀到一個字符串之后。
可以利用循環操作。

如果知道字符串的長度,那就更簡單暸。

int i,j;

i=0;
循環結搆

if(要判斷的字符 >='0' && 要判斷的字符 <='9')
j=要判斷的字符 - '0';
else if(要判斷的字符 >= 'A' && 要判斷的字符 <='F')
j=10 要判斷的字符 - 'A';
else//出錯,可以出錯
j=0;

i=i*16 j。

結束循環

--------------------------------------------------------------------------------
確實是個好方法 不過我要比對的 adress 他一個陣列就給你2個編碼 ex(0xAF) 無法一個一個的做比對...
rick060
高階會員


發表:2
回覆:112
積分:217
註冊:2009-11-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-11-18 11:12:59 IP:122.146.xxx.xxx 訂閱
我看不懂你的問題,若是第一個問題,讀一個字串轉成數值再印出來
最簡單的方法,就是不要忘了 sprintf / sscanf 的妙用,大多數技巧性的程式都可以靠他們兄弟倆...

[code cpp]
unsigned int hex;
char *input = "AB";
sscanf(input,"%x",&hex);
printf("dec:%d hex:%X\n",hex,hex);

[/code]
輸出dec:171 hex:AB

最後一個問題,由陣列讀編碼,你的陣列是字串還是數值
若是字串,把 0x 去掉再利用以上方法即可

syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-11-18 14:08:20 IP:59.125.xxx.xxx 訂閱
瀏覽 310 此,解:缺席?
我想沒這麼難喔!

00000048
11000149
22001050
33001151
44010052
55010153
66011054
77011155
88100056
99100157
10A101065
11B101166
12C110067
13D110168
14E111069
15F111170
不就是這樣?
A B -> 0xA B --> 1010 1011 <--- 沒有間隔,間隔,是方便你看
for i = 1 to 4 or .... --> X = 1 , 2 , A , B 依據字數,得到處理次數

if X <= 57 and X >= 48 then X = X - 48
else if X <= 70 and X >=65 then X = X - 55 算出結果

if i = 1, 3, 5 , 7 ..... then Y = X
else Y = (Y = 1 = 0000 0001
Y shl 4 = 0001 0000
Y 2 = 0001 0000 0000 0010 = 0001 0010 = 0x12


以上,演算法就是這樣
反過來

0xAF
左 0xA0 = (Y shr 4) shl 4
右 0x0F = Y - ((Y shr 4) shl 4)
===================引 用 brent77622 文 章===================
確實是個好方法 不過我要比對的 adress 他一個陣列就給你2個編碼 ex(0xAF) 無法一個一個的做比對...
===================引 用 brent77622 文 章===================
請問宣告16進位要用啥宣告阿
例如說 我輸入 AB
我希望他會變成 0xAB

謝謝

----------------------------------------------------
不好意思 我沒說清楚
今天有一個記事本 裡面有段文字 "12AB" 並且抓取文件裡的文字
之後我希望能把 12 轉換成 0x12
AB 轉換成 0xAB
存成兩個變數 並可以讓我使用

感謝!!!!!!!!!
編輯記錄
syntax 重新編輯於 2009-11-18 14:13:11, 註解 無‧
brent77622
一般會員


發表:2
回覆:3
積分:1
註冊:2009-07-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-11-20 14:59:59 IP:203.64.xxx.xxx 訂閱
感謝各位大大的幫助
讓我得以解決問題
謝謝大家!!
系統時間:2024-04-25 16:15:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!