2024-03-29 11:18:22 发布
网友
我搜索了文档,但找不到一个简单的方法来运行这样的查询:
SELECT columns FROM table WHERE col_a + col_b = @param
我知道我可以使用.extra(where=['col_a + col_b = %s' % whatever]),但这不是参数化的。在
.extra(where=['col_a + col_b = %s' % whatever])
在ORM中有没有一种方法可以做到这一点(即没有extra)?否则,运行该查询的最干净的方法是什么?在
extra
在爪哇
int myInt = 1; byte b1,b2,b3; b3 = (byte)(myInt & 0xFF); b2 = (byte)((myInt >> 8) & 0xFF); b1 = (byte)((myInt >> 16) & 0xFF); System.out.println(b1+" "+b2+" "+b3);
输出0 0 1
byte b1 = (myint >> 16) & 0xff; byte b2 = (myint >> 8) & 0xff; byte b3 = myint & 0xff;
我不确定这是如何在java中实现的,但我不是java开发人员
要获取最低有效字节,请执行以下操作:
b3 = myInt & 0xFF;
第二个最低有效字节:
b2 = (myInt >> 8) & 0xFF;
第三个最低有效字节:
b1 = (myInt >> 16) & 0xFF;
说明:
将一个值与0xFF(二进制中的11111111)按位ANDing将返回该数字中最低有效的8位(位0到7)。将数字向右移动8次将位8至15置于位0至7,因此与0xFF进行ANDing将返回第二个字节。类似地,将数字向右移动16次会将位16至23置于位0至7,因此与0xFF进行ANDing运算将返回第3个字节
整数不能放入3个字节。但是,假设您知道这些特定的:
byte b1 = (myInt & 0xff); myInt >>= 8; byte b2 = (myInt & 0xff); myInt >>= 8; byte b3 = (myInt & 0xff);
如果是正整数值,Jeremy的答案是正确的。如果对于负值,转换应该是正确的,那么由于二的补码格式(https://en.wikipedia.org/wiki/Two%27s_complement),转换就稍微复杂一些。诀窍是消除感兴趣的位(低有效位)和“符号”位之间的间隙。一个简单的方法是数的乘法
int myIntMultiplied = myInt * 256; byte b1, b2, b3; b3 = (byte) ((myIntMultiplied >> 8) & 0xFF); b2 = (byte) ((myIntMultiplied >> 16) & 0xFF); b1 = (byte) ((myIntMultiplied >> 24) & 0xFF);
这将为负值提供正确的补码格式
PS:您可以通过以下方式检查和比较二进制表示:
Integer.toBinaryString(myInt); Integer.toBinaryString(myIntMultiplied );
在爪哇
输出0 0 1
我不确定这是如何在java中实现的,但我不是java开发人员
要获取最低有效字节,请执行以下操作:
第二个最低有效字节:
第三个最低有效字节:
说明:
将一个值与0xFF(二进制中的11111111)按位ANDing将返回该数字中最低有效的8位(位0到7)。将数字向右移动8次将位8至15置于位0至7,因此与0xFF进行ANDing将返回第二个字节。类似地,将数字向右移动16次会将位16至23置于位0至7,因此与0xFF进行ANDing运算将返回第3个字节
整数不能放入3个字节。但是,假设您知道这些特定的:
如果是正整数值,Jeremy的答案是正确的。如果对于负值,转换应该是正确的,那么由于二的补码格式(https://en.wikipedia.org/wiki/Two%27s_complement),转换就稍微复杂一些。诀窍是消除感兴趣的位(低有效位)和“符号”位之间的间隙。一个简单的方法是数的乘法
这将为负值提供正确的补码格式
PS:您可以通过以下方式检查和比较二进制表示:
相关问题 更多 >
编程相关推荐