我的任务是动态创建包含所有参数的xib文件,例如背景颜色。我通过创建xml内容来创建xib文件,然后写入xib文件。我只能对其特定颜色进行编码,例如,对于黑色,NSRGB标签是-
<object class="NSColor" key="IBUITextColor" id="1026485712">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAwIDAAA</bytes>
</object>对于红色-
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">2</int>
<bytes key="NSRGB">MC45MzcyNTQ5NjUzIDAgMC4yMDM5MjE1ODYzAA</bytes>
</object>我不知道如何将其他十六进制颜色代码(#0000CD)转换为NSRGB (MC45MzcyNTQ5NjUzIDAgMC4yMDM5MjE1ODYzAA)的这种编码颜色。我不知道为NSRGB颜色编码十六进制颜色的标准。
发布于 2012-05-08 01:39:58
我打赌你列出的“红色”是(239,0,52)或#EF0035。如果我是对的,我想我已经搞清楚了.
我正在使用.NET来做这件事,但我认为你可以在Objective-C中找到它。
你会想要这样做:
将十六进制值转换为十进制值:
#0000CD --> (0,0,205)
将每个十进制值除以255,最多保留10位:
(0,0,205) --> (0,0,0.8039215686)
将这些值转换为字符串,每个值由空格分隔(末尾没有空格):
0 0 0.8039215686
将其转换为字节数组:
48 32 48 32 48 46 56 48 51 57 50 49 53 54 56 54
在末尾添加一个“零”字节的0:
48 32 48 32 48 46 56 48 51 57 50 49 53 54 56 54 0
现在,只需将其转换为base64字符串。我在#0000CD上的结果是:
MCAwIDAuODAzOTIxNTY4NgA=
我认为最后的=只是一个占位符,但这不是我的专业领域。
注意:在第一个值的末尾有一个额外的A ("MCAwIDAAA"),我还没有计算出来;你确定那是3A而不是2吗?
希望这能有所帮助!
发布于 2013-04-10 10:27:57
正确的答案是:您应该只解码base64字节"MCAwIDAAA“,例如:
red MSAwIDAAA -base64解码->1 0 0
橙色MSAwLjUgMAA -base64解码->1 0.5 0
你捕捉到了颜色RGB值!
https://stackoverflow.com/questions/10481344
复制相似问题