在Python中,使用该struct
模块,我可以执行类似这样的操作来获取值的压缩表示形式:
import struct
print struct.pack('L', 64)
"@\x00\x00\x00\x00\x00\x00\x00"
struct.unpack('L', '@\x00\x00\x00\x00\x00\x00\x00')
(64,)
Run Code Online (Sandbox Code Playgroud)
我想在Go做类似的事情,除非我对如何做到这一点有点不清楚.我知道我可以这样做:
import (
"encoding/binary"
"fmt"
)
bs := make([]byte, 8)
binary.PutUvarint(bs, uint64(64))
fmt.Printf("%s", bs)
"@"
Run Code Online (Sandbox Code Playgroud)
但那是非常不同的,可能不是我想要的.
我有一个小脚本,我正在生成SHA1哈希,通过hashlib的hexdigest获取二进制表示,并将它们存储在带有bytea列的Postgres DB中.我在Postgres(缩写)中有一个看起来像这样的查询:
SELECT * FROM some_table WHERE some_hash in decode(another_hash, 'hex')
Run Code Online (Sandbox Code Playgroud)
执行查询时,我有一些代码如下:
cur.execute(query)
for hash_rep in cur:
print bhash
Run Code Online (Sandbox Code Playgroud)
现在,在该print语句中,它将打印出难以理解的字符,或者如果我将其更改为:
print str(psycopg2.Binary(bhash))
Run Code Online (Sandbox Code Playgroud)
我有类似的东西:
'\214p\203\030\017K\247\373o\253'::bytea
Run Code Online (Sandbox Code Playgroud)
将它转换回原始字符串的正确方法是什么?原始表示类似于"30d22d5d64efe4c5333e",我想将其恢复到原始字符串以进行比较.我不确定我是否遗漏了一些明显的东西,
我有一个看起来像这样的表:
val | fkey | num
------------------
1 | 1 | 1
1 | 2 | 1
1 | 3 | 1
2 | 3 | 1
Run Code Online (Sandbox Code Playgroud)
我想做的是返回一组行,其中值按'val'分组,并带有fkeys数组,但仅在fkeys数组大于1的情况下。因此,在上面的示例中,返回值将是看起来像:
1 | [1,2,3]
Run Code Online (Sandbox Code Playgroud)
我有以下查询聚合数组:
SELECT val, array_agg(fkey)
FROM mytable
GROUP BY val;
Run Code Online (Sandbox Code Playgroud)
但这返回类似:
1 | [1,2,3]
2 | [3]
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?我猜可能是将现有查询用作子查询,并对它进行求和/计数,但这似乎效率很低。任何反馈都将真正有帮助!
我正在尝试使用 matplotlib 绘制类似于以下内容的图:
但是,我不太确定要使用哪种类型的图表。我的数据具有以下形式,其中起始 x 位置是大于或等于 0 的正值:
<item 1><start x position><end x position>
<item 2><start x position><end x position>
Run Code Online (Sandbox Code Playgroud)
查看文档,我看到有barh和errorbar,但我不确定是否可以使用带有起始偏移量的 barh 。考虑到我的数据类型,最好的方法是什么?我对图书馆不太熟悉,所以我希望能了解一些。