2011-04-18 44 views
12

目前我在MySQL搜索功能做十六進制字符串之間的轉換成二進制表示,例如:十六進制轉換爲二進制MySQL中

0000 -> 0000000000000000 
00AA -> 0000000010101010 
FFFF -> 1111111111111111 

我已經嘗試

UNHEX('00AA') 
CAST('00AA' AS BINARY) 
CONVERT('00AA', BINARY) 

但沒有得到我想要的結果。

回答

20

使用CONV()功能:

CONV(string, 16, 2) 

爲了根據輸入有長度:

LPAD(CONV(string, 16, 2), LENGTH(string)*4, '0') 

作爲CONV()作品具有64位精度,則不能超過64個比特轉換,所以你也可以使用這個:

LPAD(CONV(string, 16, 2), 64, '0') 

你應該檢查那LENGTH(string) <= 16或者你可能會得到錯誤的結果。

+0

謝謝,它可以始終顯示爲16位,嘗試00AA - > 10101010,它可以顯示0000000010101010 – Dels 2011-04-18 07:06:36

6
UNHEX('hex string') 

將其解釋每一對字符的傳入函數的兩個十六進制字符的字符串,並試圖將其轉換成二進制數(在MySQL二進制格式)。這樣,您可以將字符串轉換爲二進制。但是,這不會將內容顯示爲一串二進制數字。相反,結果字符串中的每個2個字節都轉換爲特定的字符編碼(例如utf8)。

相關問題