我正在编写一个创建ICC颜色格式的程序.这些格式指定一个名为s15Fixed16Number的数据类型,它具有符号位,15个整数位和16个小数位.IEEE 754 32位浮点数具有符号位,8个指数位和23个小数位.
我需要从文本框中获取输入,并将它们转换为s15Fixed16Number.有些搜索在Google图书上显示了这一点,但这是在谈论将十进制数转换为s15Fixed16Number.我想我可以使用链接中解释的方法,但我还没有做任何测试来确定它的准确性.我想我也可以尝试转换文本框中的字符输入,但我还没有想过那么多.
我正在使用Cocoa,但我认为这不重要; 任何C函数都应该有效.以下是s15Fixed16Number格式的一些示例值:
-32768.0 = 0x80000000
0 = 0x00000000
1.0 = 0x00010000
32767 + (65535/65536) = 0x7FFFFFFF
Run Code Online (Sandbox Code Playgroud)
我想自从那个数值计算课以来已经有一段时间了!
我想确定一个字符串是否是一个月的名称,我想要相对较快地完成它.目前卡在我脑中的功能如下:
boolean isaMonth( String str ) {
String[] months = DateFormatSymbols.getInstance().getMonths();
String[] shortMonths = DateFormatSymbols.getInstance().getShortMonths();
int i;
for( i = 0; i<months.length(); ++i;) {
if( months[i].equals(str) ) return true;
if( shortMonths[i].equals(str ) return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
但是,我将处理大量文本,一次传递一个字符串到这个函数,大多数时候我将遇到整个循环并返回false的最坏情况.
我看到另一个问题,谈到一个正则表达式匹配一个月的名字和一年可以适应这种情况.正则表达式会更快吗?还有其他解决方案可能更快吗?