首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在xib的xml文件的NSRGB标签中编码十六进制的颜色?

如何在xib的xml文件的NSRGB标签中编码十六进制的颜色?
EN

Stack Overflow用户
提问于 2012-05-07 19:32:38
回答 2查看 985关注 0票数 2

我的任务是动态创建包含所有参数的xib文件,例如背景颜色。我通过创建xml内容来创建xib文件,然后写入xib文件。我只能对其特定颜色进行编码,例如,对于黑色,NSRGB标签是-

代码语言:javascript
复制
<object class="NSColor" key="IBUITextColor" id="1026485712">
    <int key="NSColorSpace">1</int>
    <bytes key="NSRGB">MCAwIDAAA</bytes>
</object>

对于红色-

代码语言:javascript
复制
<object class="NSColor" key="IBUITextColor">
    <int key="NSColorSpace">2</int>
    <bytes key="NSRGB">MC45MzcyNTQ5NjUzIDAgMC4yMDM5MjE1ODYzAA</bytes>
</object>

我不知道如何将其他十六进制颜色代码(#0000CD)转换为NSRGB (MC45MzcyNTQ5NjUzIDAgMC4yMDM5MjE1ODYzAA)的这种编码颜色。我不知道为NSRGB颜色编码十六进制颜色的标准。

EN

回答 2

Stack Overflow用户

发布于 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吗?

希望这能有所帮助!

票数 5
EN

Stack Overflow用户

发布于 2013-04-10 10:27:57

正确的答案是:您应该只解码base64字节"MCAwIDAAA“,例如:

red MSAwIDAAA -base64解码->1 0 0

橙色MSAwLjUgMAA -base64解码->1 0.5 0

你捕捉到了颜色RGB值!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10481344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档