十六進制字符串是: - 70 6F 77 65 72 73 68 65 6C 6C
爲上面的字符串的ASCII是:的powershell
我想知道如何識別上面的字符串是小端還是大端。
假設如果我改變字節以其他端6F 70 65 77 73 72 65 68 6C 6C 則ASCII是「opwesrehll」。
如果我正在改變字節順序,那麼值正在改變。我認爲轉換出了問題。
如何轉換爲其他endian格式不改變主值「powershell」?
在此先感謝
十六進制字符串是: - 70 6F 77 65 72 73 68 65 6C 6C
爲上面的字符串的ASCII是:的powershell
我想知道如何識別上面的字符串是小端還是大端。
假設如果我改變字節以其他端6F 70 65 77 73 72 65 68 6C 6C 則ASCII是「opwesrehll」。
如果我正在改變字節順序,那麼值正在改變。我認爲轉換出了問題。
如何轉換爲其他endian格式不改變主值「powershell」?
在此先感謝
「字節沒有字節順序。」 - @MichaelPetch
是正確的,因爲您的ASCII碼是每個字母一個字節。所以,只需一次讀取每個字節的一個字母即可建立您的單詞。
「假設如果我改變字節順序到其他端
6f 70 65 77 73 72 65 68 6c 6c
那麼ASCII碼是‘opwesrehll’。
也就是說如果你翻車了2個字節的時有發生,但是這是ASCII(字母字符)...
對於每個字母,您應該讀取一個字節,並且不涉及翻轉/字節順序。翻轉僅計數數字值存儲在Short
(2字節),甚至每Long
/Double
Integer
/Float
(4個字節)(8個字節)等
「我想知道如何辨別上面的字符串是小端或大端。 「
側面說明:UTF-16(非ASCII)有時可以使用字母字符超過1個字節(尤其是與外國字母像日語俄語阿拉伯語等)。對於這種情況,文本將以一個稱爲BOM(字節順序標記)的兩字節標誌開始,表示字節是什麼字節。請檢查bytes[0]
,如果此第一個字節[0]
給出值255(0xFF),然後再檢查bytes[1]
如果下一個字節給出254(0xFE),則您的UTF文本是小尾數。對於大端,你期望0xFE,然後是0xFF。因爲你的支票一次一個字節 ...
BOM與UTF-8沒有此用途。它只是作爲溝通編碼的一種方式。 (有些人認爲是這樣;一些人反對。)代碼點的UTF-8字節(代碼單元)仍然是特定的字節序列。單詞的字典是不相關的。 –
字節順序通常不是一個應用於(ASCII)字符串的概念,因爲每個字符只有一個字節,並且整個字符串在內存中以相反的順序存儲會很奇怪。 –
字節沒有字節序。 –
此外,您可以檢測系統的字節序,但不能檢測數據。數據的排列順序是作者所使用的;問。所以,我問你:當你寫70時,你的意思是這個值是7 * 16 + 0 * 1?高蠶食先? –