我试图将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