2013-02-09 92 views
-2

我剛剛學習C,在我的課堂上,這是我們第一個課程的一部分。編寫一個C函數來解析一個十六進制字符串並將其轉換爲十進制?

我想實現的功能的完整描述:

如果這是TL;博士,一個關鍵點是,我不能使用功能從其它庫(所以像srtol被排除) 。

int parseHexString(char *hexString, int *integerRead);第一 參數是空終止C字符串,表示與十六進制 整數。此函數分析此字符串,累計其表示的整數值 。該整數值位於第二個參數integerRead指向的位置 。如果遇到錯誤的十六進制 字符(因此遇到無效的十六進制值),則此函數 將停止查看字符串中的其他字符並返回-1。 如果一個良好的十六進制值進行解析,則返回0。

實現此功能的正確方法着眼於字符串中的第一個字符 第一,不使用堆棧 完成解析。你的第一個彙編語言程序將需要 來實現這個功能完成的功能,所以你將通過正確的方式實現這個功能來節省你自己的時間。

對於此功能,請勿調用任何庫中的任何函數;作爲 例外,僅用於調試目的,您可以使用printf()。如果您在提交 作業之前刪除了調試代碼,它將幫助我們分級。

我不只是尋找這個功能的完整實現,只是一些提示或提示讓我開始。

我覺得好像有一些直觀的做法,但現在我空白。我關心的是如何從字符串的第一個字符開始,然後從那裏開始將其轉換爲十進制。

+1

哇,他們甚至提到你可以使用**之前,你發送功課**。 – cnicutar 2013-02-09 09:48:05

+0

需要多少個十六進制字符才能生成1個字節? – Flexo 2013-02-09 09:50:19

回答

2

如何:

  • 獲取字符串
  • 走在字符串的長度從左至右
  • 對於每個字符:
    • 檢查它是否是一個有效的十六進制字符
    • 將其十進制值乘以16^x,其中x是右側留下的字符數
相關問題