我試圖將bigint無符號數字的二進制表示存儲到MySql中的二進制(8)列中。例如,值9
應該被存儲爲0...01001
,其中包含一堆0
s的強制性左填充。這可能嗎?bigint轉換爲二進制(8)列的二進制表示
0
A
回答
0
- 使用
CONV(..., 10, 16)
將數字轉換從基座10到基座16 - 採取這一結果和左襯它具有高達16的0:
LPAD(..., 16,'0')
- 採取這一十六進制編碼的串並轉換與爲二進制
UNHEX(...)
所以你的表情是UNHEX(LPAD(CONV(/* input value or column here */,10,16),16,'0'))
。
實例使用HEX()
函數把八位位組回十六進制,使我們可以看到的結果是:
mysql> SET @input = 9; SET @output = UNHEX(LPAD(CONV(@input,10,16),16,'0')); SELECT HEX(@output);
+------------------+
| HEX(@output) |
+------------------+
| 0000000000000009 |
+------------------+
1 row in set (0.00 sec)
mysql> SET @input = 65536; SET @output = UNHEX(LPAD(CONV(@input,10,16),16,'0')); SELECT HEX(@output);
+------------------+
| HEX(@output) |
+------------------+
| 0000000000010000 |
+------------------+
1 row in set (0.00 sec)
-- largest possible bigint unsigned
mysql> SET @input = 18446744073709551615; SET @output = UNHEX(LPAD(CONV(@input,10,16),16,'0')); SELECT HEX(@output);
+------------------+
| HEX(@output) |
+------------------+
| FFFFFFFFFFFFFFFF |
+------------------+
1 row in set (0.00 sec)
+0
警告:不要在輸入表達式中使用任何涉及文字的數學運算,例如'CONV()'的第一個參數 - 例如不要嘗試'CONV(18446744073709551610 + 4,...'因爲MySQL不會做你想做的事情。對數字文字的算術運算是用雙精度浮點數學來完成的,這會導致大數和小數的近似誤差。參數是單個數字或bigint無符號列或變量,它們按預期工作。 –
相關問題
- 1. 將mpz_t轉換爲二進制表示
- 2. 從十進制轉換爲二進制
- 3. 將二進制轉換爲十進制
- 4. 二進制轉換爲十進制 - understaing
- 5. 從二進制轉換爲十進制
- 6. 十六進制轉換爲二進制
- 7. 將十進制轉換爲二進制
- 8. 將八進制轉換爲二進制
- 9. 從二進制轉換爲十進制
- 10. 十六進制轉換爲二進制
- 11. ESQL轉換爲二進制
- 12. 轉換爲二進制C++
- 13. 將表示二進制的字符串轉換爲二進制python
- 14. Python,將二進制表示轉換爲一個真正的二進制值
- 15. 十進制轉換爲二進制,但在8位格式
- 16. 在二進制表示中將二進制std :: string轉換爲int
- 17. 將十進制轉換爲二進制和二進制轉換爲十進制的程序?
- 18. 如何將數字(十進制)轉換爲二進制(二進制)數字和從二進制到十進制?
- 19. 二進制轉換爲十六進制和十六進制轉換爲二進制
- 20. 將二進制數字轉換爲二進制數字
- 21. 將二進制字符串轉換爲二進制
- 22. Python將二進制字符串轉換爲二進制int
- 23. 將二進制字符串轉換爲二進制文字
- 24. 如何元組列表轉換爲二進制二郎
- 25. 十進制轉換爲二進制的轉換
- 26. 二進制到十進制轉換
- 27. 十進制到二進制轉換
- 28. 十六進制到二進制轉換
- 29. 十進制到二進制轉換
- 30. 十進制到二進制轉換
一個'binary'列存儲八位位組,而不是比特。你的意思是bigint的無符號值應該存儲爲八位位組:0x00 0x00 0x00 0x00 0x00 0x09也稱爲[big endian](https: //en.m.wikipedia.org/wiki/Endianness) - 或者你在想別的什麼嗎? –
準確地說 - 大端正是我想要的。 – gzak