包含Example2_3案例源码的词条

hacker|
121

文章目录:

如何将java中的.class文件反编译

安装Java jdk后

看安装目录里有没有jad.exe,没有要下载,一般都有的

配置Java环境变量

开始-运行-cmd-回车-进入命令行窗口:

cd+空格+class文件所在路径:

按下面的命令进行反编译:

例如:[2] jad -sjava example.class 回车

在目录里可以看到example.java源文件

[1] 反编译一个class文件:jad example.class,会生成example.jad,用文本编辑器打开就是java源代码

[2] 指定生成源代码的后缀名:jad -sjava example.class,生成example.java

[3] 改变生成的源代码的名称,可以先使用-p将反编译后的源代码输出到控制台窗口,然后使用重定向,输出到文件:jad -p example.class myexample.java

[4] 把源代码文件输出到指定的目录:jad -dnewdir -sjava example.class,在newdir目录下生成example.java

[5] 把packages目录下的class文件全部反编译:jad -sjava packages/*.class

[6] 把packages目录以及子目录下的文件全部反编译:jad -sjava packages/**/*.class,不过你仍然会发现所有的源代码文件被放到了同一个文件中,没有按照class文件的包路径建立起路径

[7] 把packages目录以及子目录下的文件全部反编译并建立和java包一致的文件夹路径,可以使用-r命令:jad -r -sjava packages/**/*.class

[8] 当重复使用命令反编译时,Jad会提示“whether you want to overwrite it or not”,使用-o可以强制覆盖旧文件

[9] 还有其他的参数可以设置生成的源代码的格式,可以输入jad命令查看帮助,这里有个人做了简单的翻译:jad命令总结

[10] 当然,你会发现有些源文件头部有些注释信息,不用找了,jad没有参数可以去掉它,用别的办法吧。

ExampleFileFilter如何实例化?

提示的错误实际上是ExampleFileFilter这个类找不到,因为你没有编写这个类,而且它也不是JDK里的类,在你的程序里是想为文件选择器添加一个过滤器,过滤显示文件,我估计你是参照JDK文档里用法,但它所用的ExampleFileFilter是另外一个类,在JDK5.0里有源代码,代码路径如下:

yourJDK/demo/jfc/FileChooserDemo/ExampleFileFilter.java(必须是JDK5.0)我刚刚看了下6.0的没有。

你在这里使用的filter.addExtension("txt");

filter.setDescription("文本文件"); 两个方法里面都有实现。你可以参考一下。

部分源代码如下:为了省篇幅,我把注释删了

public class ExampleFileFilter extends FileFilter {

private static String TYPE_UNKNOWN = "Type Unknown";

private static String HIDDEN_FILE = "Hidden File";

private Hashtable filters = null;

private String description = null;

private String fullDescription = null;

private boolean useExtensionsInDescription = true;

public ExampleFileFilter() {

this.filters = new Hashtable();

}

public ExampleFileFilter(String extension) {

this(extension,null);

}

public boolean accept(File f) {

if(f != null) {

if(f.isDirectory()) {

return true;

}

String extension = getExtension(f);

if(extension != null filters.get(getExtension(f)) != null) {

return true;

};

}

return false;

}

/**

* Return the extension portion of the file's name .

*

* @see #getExtension

* @see FileFilter#accept

*/

public String getExtension(File f) {

if(f != null) {

String filename = f.getName();

int i = filename.lastIndexOf('.');

if(i0 ifilename.length()-1) {

return filename.substring(i+1).toLowerCase();

};

}

return null;

}

/**

* Adds a filetype "dot" extension to filter against.

*

* For example: the following code will create a filter that filters

public void addExtension(String extension) {

if(filters == null) {

filters = new Hashtable(5);

}

filters.put(extension.toLowerCase(), this);

fullDescription = null;

}

matlab 编写一个程序实现十进制数转换为二进制数?

十进制数转换为二进制数的matlab实现

收藏 11337 次阅读 | 4 个评论 2007-08-12 03:02

matlab提供了一个系统函数dec2bin,可以用来进行十进制数的二进制转换,不过功能有限!

在matlab中键入 help dec2bin,如下:

DEC2BIN Convert decimal integer to a binary string.

DEC2BIN(D) returns the binary representation of D as a string.

D must be a non-negative integer smaller than 2^52.

DEC2BIN(D,N) produces a binary representation with at least

N bits.

Example

dec2bin(23) returns '10111'

可见,这个函数只能转换整数,对非整数就无能为力了.因此,自己编写了matlab小程序,顺便也贴出来,希望对需要的人能有所帮助!^_^

1.小数转换为二进制数

输入参数有2个,一个是输入的小数(小于1),一个是指定转换后的二进制位数!程序源码如下:

y=dectobin(innum,N)

%十进制小数转换为二进制数

%输入参数为innum和N

%innum为输入的十进制小数

%N为指定转换后二进制的位数

if (innum1)|(N == 0)%判断输入的有效性

disp('error!');

return;

end

count=0;

tempnum=innum;

record=zeros(1,N);

while(N)

count=count+1;%长度小于N

if(countN)

N=0;

% return;

end

tempnum=tempnum*2;%小数转换为二进制,乘2取整

if tempnum1

record(count)=1;

tempnum=tempnum-1;

elseif(tempnum==1)

record(count)=1;

N=0;%stop loop

else

record(count)=0;

end

end

y=record;

2.如果要转换整数,则直接调用matlab的dec2bin即可!

3.对于大于1的非整数,可以利用将其分为整数部分和小数部分的方法来处理:

利用matlab的floor函数可以对输入的数(设为innum)向下取整,然后利用innum-floor(innum)就可以得到小数部分,调用上面的函数就可以得到其二进制表达式!

注意,这里有一个小问题,就是dec2bin函数的返回值是一个char array,所以,我们应该先将其转换为double array!可以利用double()进行强制类型转换,得到ASCII码值,减去48就可以得到double array类型的0,1序列!

程序代码如下:

[num,numint,numf]=dectobin1(innum,N)

%十进制数转换为二进制数

%输入为十进制数innum,以及小数部分的位数N

%输出为三个参数num,numint,numf

%num为输出的二进制形式

%numint为整数部分的二进制表达式

%numf为小数部分的二进制表达式

sep=5;%整数和小数部分的分隔符

if(mod(innum,1)==0)%判断输入是否为整数,mod为取余函数

numint=dec2bin(innum);

numint=double(numint)-48;

numf=zeros(1,N);

num=[numint,sep,numf];

return

end;

%输入为非整数的情况

nint=floor(innum);%整数部分

nf=innum-nint;%小数部分

res_nint=dec2bin(nint);

res_nint=double(res_nint)-48;

res_nf=dectobin(nf,N);

numint=res_nint;

numf=res_nf;

num=[numint,sep,numf];

其中的dectobin函数就是最上面的小数转二进制函数!

4.似乎已经大功告成了,是吗?NO,还有一个问题,那就是负数的情况,在这里,我们采用补码的方式,如果输入为正,则二进制表达式不变,如果为负,则按位取反并加1.因此,需要对上面的函数加上一个负数判断以及补码转换的功能.最终的表示结果可以采用1QN的格式.补码转换部分程序如下:

[numo,numinto,numfo]=conv(numint,numf,flag)

%二进制数的补码表示

%输入参数为numint整数部分的二进制表达式,numf小数部分二进制表达式,flag负数标志

%输出参数为numo输入的补码,numinto整数部分的补码,numfo小数部分的补码

if (flag==0)

numo=[0,numint,5,numf];%正数

numinto=numint;

numfo=numf;

else%负数,整数和小数部分均进行按位取反并加一

l1=length(numint);

l2=length(numf);

num=[numint,numf];

l=l1+l2;

for i=1:l

if num(i)==1%按位取反

num(i)=0;

else

num(i)=1;

end

end

%取反后加一

temp_l=l;

while(temp_l~=0)

if num(temp_l)==0%最低位为0

num(temp_l)=1;

temp_l=0;%结束循环

else

num(temp_l)=0;

temp_l=temp_l-1;

end

end

% l1=length(numint);

% for i=1:l1

%

% if numint(i)==1%按位取反

% numint(i)=0;

% else

% numint(i)=1;

% end

%

% end

%

% l2=length(numf);

% for i=1:l2

%

% if numf(i)==1%按位取反

% numf(i)=0;

% else

% numf(i)=1;

% end

%

% end

%

% %取反后加一

% temp_l1=l1;

% while(temp_l1~=0)

% if numint(temp_l1)==0%最低位为0

% numint(temp_l1)=1;

% temp_l1=0;%结束循环

% else

% numint(temp_l1)=0;

% temp_l1=temp_l1-1;

% end

% end

%

% %取反后加一

% temp_l2=l2;

% while(temp_l2~=0)

% if numf(temp_l2)==0%最低位为0

% numf(temp_l2)=1;

% temp_l2=0;%结束循环

% else

% numf(temp_l2)=0;

% temp_l2=temp_l2-1;

% end

numinto=num(1:l1);

numfo=num(l1+1:l);

% numinto=numint;

% numfo=numf;

numo=[1,numinto,5,numfo];

end

opencv视频控制程序问题

int frames = (int)cvGetCaptureProperty(g_capture,CV_CAP_PROP_FRAME_COUNT);

g_capture = cvCreateFileCapture("On The Top Of Forbidden City.AVI");

这两句写反了吧,前一句中的g_capture为NULL,那么就不会得到视频的总帧数,frames应该为0,后面在创建滚动条时就不行。你再试试,如果还不行再问我,下面是我做的一个,你看看。

#include iostream

#include "cv.h"

#include "highgui.h"

using namespace std;

int g_slider_position = 0;

CvCapture* g_capture = NULL;

void onTrackbarSlide(int pos) {

cvSetCaptureProperty(

g_capture,

CV_CAP_PROP_POS_FRAMES,

pos

);

}

int main( int argc, char** argv ) {

cvNamedWindow( "Example3", CV_WINDOW_AUTOSIZE );

g_capture = cvCreateFileCapture( "test.avi" );

int frames = (int) cvGetCaptureProperty(

g_capture,

CV_CAP_PROP_FRAME_COUNT

);

if(frames!=0)

{

cvCreateTrackbar(

"Position",

"Example3",

g_slider_position,

frames,

onTrackbarSlide

);

}

IplImage* frame;

//frames=0;

while(1) {

frame = cvQueryFrame( g_capture );

if( !frame ) break;

//frames++;

//cout"frame="framesendl;

//cvSetTrackbarPos("Position","Example2_3",frames);

cvShowImage( "Example3", frame );

char c = (char)cvWaitKey(33);

if( c == 27 ) break;

}

cvReleaseCapture( g_capture );

cvDestroyWindow( "Example3" );

return(0);

}

《learning opencv》中的example2_2报错求帮助!!!谢谢!!

D:\TDDOWNLOAD\chengxu\播放AVI视频.CPP(24) : warning C4508: 'main' : function should return a value; 'void' return type assumed

main是int main 形式要返回一个值 return 1;有的编译器不要求int main 返回值,但是大部分编译器要求返回值。

D:\TDDOWNLOAD\chengxu\播放AVI视频.CPP(10) : error C2065: 'cvCapture' : undeclared identifier

大小写打错是CvCapture

D:\TDDOWNLOAD\chengxu\播放AVI视频.CPP(10) : error C2065: 'capture' : undeclared identifier

D:\TDDOWNLOAD\chengxu\播放AVI视频.CPP(10) : error C2440: '=' : cannot convert from 'struct CvCapture *' to 'int'

This conversion requires a reinterpret_cast, a C-style cast or function-style cast

因为前面那个错引起的。

D:\TDDOWNLOAD\chengxu\播放AVI视频.CPP(22) : error C2065: 'cvDestoryWindow' : undeclared identifier

cvDestoryWindow打错了。

4条大神的评论

  • avatar
    访客 2022-07-04 下午 10:49:48

    =double(numint)-48; numf=zeros(1,N); num=[numint,sep,numf]; returnend;%输入为

  • avatar
    访客 2022-07-04 下午 11:32:17

    ,所以,我们应该先将其转换为double array!可以利用double()进行强制类型转换,得到ASCII码值,减去48就可以得到double array类型的0,1序列!程序代码如下:[num,numint,numf]=

  • avatar
    访客 2022-07-05 上午 04:06:49

    ar)cvWaitKey(33); if( c == 27 ) break; } cvReleaseCapture( g_capture ); cvDestroyWindow( "Example3" ); return(0);}《learning opencv》中的

  • avatar
    访客 2022-07-05 上午 01:01:43

    成example.jad,用文本编辑器打开就是java源代码[2] 指定生成源代码的后缀名:jad -sjava example.class,生成example.java[3] 改变生成的源代码的名称,可以先使用-p将反编译后的源代码输

发表评论