“ABC”——“一个”被认为是有害的
3视图(30天)
显示旧的评论
诀窍
“ABC”——“一个”
良好的编程风格吗?
推荐- - - - - -编辑- - - - - -
标签:回答“
是一个跟踪我提交问题的原因。我看到问题的“新Matlab”,得到的答案包括不太明显的代码与“ABC”——“一个”“嵌入式是没有理由的。
接受的答案
沃尔特·罗伯森
2012年5月5日
加上或者减去“0”是最有效的十进编码的二进制和character-coded二进制之间的转换方法。
减去“一”或“A”(然后添加10)是一个众所周知的和有效的从character-encoded十六进制转换到二进制。
加上或者减去“(空间)是经常使用base64编码/解码(例如,MIME)[虽然代价你需要处理二进制0编码为时间而不是空间)
加上或者减去32
非常
常见的魔术高层之间的转换和小写ASCII。如此普遍,它变成了一个问题在处理EBCDIC然后iso - 8896 - *和UNICODE。如此常见,这个错误是很难找到,因为程序员阅读32,
知道
大写或小写转换,然后困惑,信件没有被正确转换……
字符' 1 '通过' 9 '一直以来连续编码位置ITA2代码1930。任何项目,不需要使用Baudot或穆雷以上代码可能会假定一个事实。任何程序编写的ASCII / ANSI / ISO / UNICODE行可能假设大写“拉丁”(英语)连续字符,并且连续小写“拉丁”(英语)字符:这是一个基本的标准化没有比假设所有MATLAB操作符的字符出现在字符集。尽我所知,MATLAB从来没有支持任何EBCDIC-based系统的假设是不正确的。万博1manbetx
1评论
沃尔特·罗伯森
2018年6月9日
几周前,我在帮助别人为哈佛在线课程学习C语言。早期的一些练习涉及密码(如压缩空气蓄能密码),后来涉及翻译的音符字母(注意和八度)频率。
结果是令人惊讶的是很难让人
保留
计算相对位置的想法减去第一个成员的一个有序序列。
另一方面,这将是很难教初学者的想法索引mostly-unpopulated矩阵的一个角色。是荒谬的让他们单独测试平等与每个字母符号。触手可及的人是唯一现实的实现减去基本性格,或循环比较的参考向量特征提取匹配的索引。
现在他们
有
保留的想法找到相对位置,这是一个有效的通用技术在很多情况下他们在未来可以应用编程;连续循环比较与可能性,不是,我想说,比减去更“干净”的基础。
更多的答案(4)
每•艾萨克森
2012年8月13日
编辑:每•艾萨克森
2016年7月18日
1评论
詹姆斯Tursa
2016年7月17日
编辑:詹姆斯Tursa
2016年7月17日
有趣的结果。这似乎是解析器的工作优化的东西。例如,从命令行:
> > S = char (“一个”+地板(兰德(1,1 e7) * 25));
> >
> >明确;抽搐;一个= S -' 0 ';toc
运行时间是0.068686秒。
> >明确;抽搐;一个= S -' 0 ';toc
运行时间是0.068900秒。
> >明确;抽搐;一个= S -' 0 ';toc
运行时间是0.064843秒。
> >明确;抽搐;一个= S -' 0 ';toc
运行时间是0.059291秒。
> >明确;抽搐;一个= S -' 0 ';toc
运行时间是0.070644秒。
> >
> >明确;抽搐;一个=双(S) -双(' 0 ');toc
运行时间是0.075243秒。
> >明确;抽搐;一个=双(S) -双(' 0 ');toc
运行时间是0.067354秒。
> >明确;抽搐;一个=双(S) -双(' 0 ');toc
运行时间是0.077742秒。
> >明确;抽搐;一个=双(S) -双(' 0 ');toc
运行时间是0.073420秒。
> >明确;抽搐;一个=双(S) -双(' 0 ');toc
运行时间是0.078540秒。
所以在命令行双()的优势就消失了。也许有一些MATLAB编译后的代码是使用在双()的情况下,解析器可用,并没有这样的编译后的代码字符-案例。
因为这个结果似乎的结果优化代码解析器能够使用,我不会感到惊讶,如果这个结果MATLAB版本之间的变化不少。
例如,一个简单的墨西哥人常规结果表明,原始的S - ' 0 '计算可以显著提高使用编译后的代码:
> >明确;抽搐;一个= char_minus(年代,' 0 ');toc
运行时间是0.044921秒。
> >明确;抽搐;一个= char_minus(年代,' 0 ');toc
运行时间是0.043699秒。
> >明确;抽搐;一个= char_minus(年代,' 0 ');toc
运行时间是0.046204秒。
> >明确;抽搐;一个= char_minus(年代,' 0 ');toc
运行时间是0.051441秒。
> >明确;抽搐;一个= char_minus(年代,' 0 ');toc
运行时间是0.058610秒。
墨西哥人的例程(梗概,而不是生产质量):
#包括“mex.h”
无效mexFunction (int nlhs mxArray * plhs [], int nrhs, const mxArray * prhs [])
{
mwSize我,n;
mwSize *变暗;
mwSize ndim;
mxChar * cp;
mxChar c;
双*公关;
n = mxGetNumberOfElements (prhs [0]);
dim = mxGetDimensions (prhs [0]);
ndim = mxGetNumberOfDimensions (prhs [0]);
cp = mxGetChars (prhs [0]);
c = * mxGetChars (prhs [1]);
plhs [0] = mxCreateNumericArray (ndim,弄暗,mxDOUBLE_CLASS mxREAL);
公关= mxGetPr (plhs [0]);
而(n)) {
*公关+ + = * cp + + - c;
}
}
1月
2012年5月5日
视情况而定。结果是清晰和明确,但不明显。如果你将大数组存储在一个m文件,
字符
占用更少内存的内存比
双
数组。但在M-files存储大型数据集是一个糟糕的编程风格,因为这种混合数据和程序。
我使用
“abc”——“一个”
只在M-files对图标进行编码,因为它允许一个模糊的结果。
颜色= [“CCCCCHFFHCCCCC”;…
“CDFNBFFFFFFFDC”;…
“DPGGGGGGGGGGBH”;…
“DPDMMMMOOAADPD”;…
“DFFFNFFFFFFFIH”;…
“CILLKJGEKNGEIC”;…
“CILBKJLGKFNKIC”;…
“CILBKJLGKFIKIC”;…
“CILBKJLGKFIKIC”;…
“CDLBKJLGKFIKDC”;…
“CDLBKJLGKFIKDC”;…
“CDLBKJLGKFIKDC”;…
“CDLBKJLGKFNKDC”;…
“CDLLKJGEKNGEDC”;…
“CHBGEEEGGLPNHC”;…
“CMDDIIDDDDDHMC”)- (“一个”- 1);
地图=[28日26日36;…
116、118、132;…
南南,南;…
73、74、89;…
177、176、193;…
96、98、112;…
151、152、167;…
60、63、76;…
84、84、96;…
220、222、236;…
191、193、206;…
135、133、143;…
39,41岁,55岁;…
108、107、118;…
36岁,34岁44;…
124、126、140);
大小(x, y) =(颜色);
图标=重塑(地图(颜色:)/ 255 x, y, 3);
uicontrol (“位置”,(10、10,32岁,32),CData的图标);
在我看来,这是最好的方法来存储一个图标的m文件。但是图标可以存储和编辑图形文件中舒服多了。