kdb - 如何将十六进制颜色代码生成为字符串或符号

kku*_*udi -3 kdb

我想在内存表上创建一列,该列根据人名(另一列)生成颜色十六进制代码。一个快速的谷歌并没有给出太多,所以想知道是否可以在这里给出任何指示。例如

update colour: <some code and use username col as input> from table
Run Code Online (Sandbox Code Playgroud)

Tho*_*yth 8

在 kdb+ 中,您可以通过update语句在列上运行函数,但根据函数是否矢量化而略有不同。如果矢量化:

update colour:{<some code>}[username] from table
update colour:someFunction[username] from table
Run Code Online (Sandbox Code Playgroud)

如果未矢量化,则需要像each'这样的迭代器

update colour:{<some code>}'[username] from table
update colour:someFunction'[username] from table
Run Code Online (Sandbox Code Playgroud)

此函数将从字符串的前 3 个字符生成十六进制代码。

q)hex:{a:i-16*j:(i:`int$3#x)div 16;"0123456789ABCDEF"raze(j-16*j div 16),'a}
q)hex"Hello"
"48656C"
q)update colour:hex'[username] from table
Run Code Online (Sandbox Code Playgroud)

  • 在这方面,你的问题相当模糊。到目前为止,您在生成十六进制代码方面做了哪些尝试?应该按照什么规则进行转换?您只需要字符串的前 3 个字符即可完成此操作吗?我在我的答案中添加了一个十六进制代码生成器函数。 (7认同)