2013-01-21 35 views
1

這應該是低級課程,它只是課程的第三天。然而,我們被要求「用十六進制,二進制和八進制符號寫空終止的字符串'R5'。假設使用ASCII碼」以十六進制等寫入以空字符結尾的字符串「R5」

我不知道該怎麼去學習如何做到這一點。有什麼建議麼?謝謝。

+0

'R'的ASCII碼是什麼?這有助於你開始嗎?你是用十六進制,二進制,八進制還是十進制來回答的? – mpez0

+0

看看這個ASCII圖表,我發現'R'的十六進制是'0x52'。 我也看到'5'的十六進制是'0x35'。這是否意味着R5的十六進制是'0x520x35'?我真的完全迷失在這裏。有一個教程,我可以讀? –

+0

你不應該從你的課本中學習嗎? – Jimmy

回答

1

以NULL結尾的ASCII字符串每個字符存儲一個字節,另外一個字節存儲NULL。因此,您將打印三個字節 - 「R」,「5」和0.

ASCII chart上查找「R」和「5」,查看ASCII中這些字符的數值。然後,用三種不同的方式寫出你的三個字節 - 每一個用於十六進制,二進制和八進制。

希望有所幫助。

+0

謝謝你的幫助,craig65535。我發現三個字節分別是'52','35'和'30'。我現在有我的三個字節,但我不確定如何處理這些從這裏... –

+0

第三個字節是0,而不是30. 0x52,0x35,0x30將字面上字符'R50'。 – Jimmy

1

看起來這只是要求你從ASCII表中查找合適的條目,在大多數情況下,這些條目列出了十六進制和八進制以及字符本身。

ASCII是一種定義字符如何表示的標準方法,大多數表將按照相應的十六進制,十進制和八進制值列出字符。前128個是標準的,接下來的128個是擴展字符(那些奇怪的字符不映射到英文鍵盤)。

如果你谷歌的「ASCII表」,你會被不同的鏈接淹沒。我在www.asciitable.com上看到的第一個似乎有你需要的一切 - 除了二進制。

大多數情況下,您不會看到二進制文件列出,但將十六進制值轉換爲二進制文件相當理想 - 您的Windows計算器會爲您做到這一點。

要更直接地翻譯您的特定字符串,您需要分別查找每個字符(包括空值)並單獨轉換每個字符。

0

最終到電腦,一切都是一個數字。爲了表示諸如字母或符號之類的字符,我們可以同意編碼或這些字符的編號。例如,我們可以創建一個新的編碼,其中1表示'A',2表示'B',等等。 ASCII是一種將字符映射到數字的常用文本編碼。在這種情況下,我們關注的是一個由3個字符組成的字符串:'R''5'null(空字符表示字符串的結尾,它由值0表示。如果您查看ASCII table,您會發現該數值是8253,並0

String: R, 5, <null> 
Decimal numbers: 82, 53, 0 

我們的正常數系統是基於10,或小數。這意味着,每個數字代表一個值比下(1大十倍,到10 ,從100到1000等等),其他的基礎包括8個(八進制),16個(十六進制)和2個(二進制),雖然你也可以很容易地找到計算器, Ť他轉換爲你。您可能想要查看教科書的相關部分,或查看維基百科文章。對於小數82的示例,十六進制值是52(這意味着5 * 16 + 2 = 8 * 10 + 2)。通常情況下,你會看到一個前綴「0x」,這通常用於清除下面的數字是以16爲底的。(否則,你可能會認爲「52」是指十進制值52)。


有趣。那麼,說空字符結尾的字符串「R5」只是「52,35,30」還是有更正確的格式呢?感謝您的耐心等待。 -

正如我在另一個評論指出,實際 0標記的字符串,而不是值的0x30,表示該串中的字符「0」的結束。請注意,零(0)的值是相同的,無論您的數字在哪個基礎上。

String: R, 5, <null> 
Decimal : 82, 53, 0 
Hexadecimal: 52, 35, 0 
+0

有趣。那麼,說空字符結尾的字符串「R5」只是「52,35,30」還是有更正確的格式呢?感謝您的耐心等待。 –

+0

已更新的答案。 – Jimmy

+0

我現在看到了。我錯誤地查找了字符0的十六進制等價物,而不是使用值0.我的問題雖然只是詢問是否有適當的格式(如將三者全部寫在一起ala 52350)。我現在看到它們只是按順序列出的。謝謝你的耐心。 如果我沒有弄錯,R5會寫成八進制爲「122,065,0」。 感謝您的時間,我會在此閱讀。乾杯。 –

相關問題