Eoi*_*ell 37
如果它用于HTML页面,将#RRGGBB标记存储为字符串就足够了.
如果它用于.NET,它支持从其ARGB值构建颜色
System.Drawing.Color c = System.Drawing.Color.FromArgb(int);
int x = c.ToArgb();
Run Code Online (Sandbox Code Playgroud)
所以你可以存储那个int.
Bee*_*jor 17
理想的存储格式取决于您计划如何使用数据库.
最简单的解决方案当然是将所有内容存储为RGB颜色的6字节ASCII十六进制字符串,而不支持任何其他格式.如果您以后想要支持其他格式,可能会遇到问题.
为了便于阅读,灵活性和易用性,使用普通字符串是一个好主意.在大多数情况下,十六进制颜色字符串和原始整数之间的存储空间差异可以忽略不计.为了提高速度,您可以设置要编制索引的颜色字段.为了灵活性,您可以添加以下一项或多项功能:
要优化搜索和排序速度以及磁盘使用,存储为无符号整数是可行的方法.这是因为单个数字的搜索速度比一串字符快,可以在内部存储少量的几个数字,您仍然可以使用FromArgb()和类似的函数在查询中按颜色通道进行过滤.缺点是您的代码需要不断地为每个查询中的每个颜色字段来回转换事物,这实际上可能抵消任何数据库速度增益.
混合方法可能值得探索.例如,考虑一个包含所有可能的每通道8位RGB值的表,其中的字段由id,rgbhex,cssname,cmyk,hsl,hsv,lab,rgb等组成.您需要自动化创建这样一个表,因为它会如此之大(16777216条目).它会为你的表增加超过16 MB,但这个解决方案的优点是你的所有颜色值都只是一个与颜色查找表的外键链接的整数id字段.快速排序和搜索,您需要的任何颜色数据,无需任何转换,并且极易扩展.您还可以将表保留在自己的数据库文件中,以便由应用程序中的任何其他数据库或脚本共享.无可否认,对于大多数情况来说,这种解决方案是过度的.
Jim*_*meh 14
可能颜色值最好,例如#FFFFFF或#FF0000
rjs*_*ing 13
将颜色存储为24或32位整数,如HTML/CSS,即#FF00CC,但转换为整数而不是字符串.
整数占用的空间比字符串少(特别是VCHAR).