我对这段代码感到好奇:
public static class XNAExtensions
{
/// <summary>
/// Write a Point
/// </summary>
public static void Write(this NetOutgoingMessage message, Point value)
{
message.Write(value.X);
message.Write(value.Y);
}
// ...
};
Run Code Online (Sandbox Code Playgroud)
this关键字在参数类型旁边的含义是什么?我似乎无法在任何地方找到任何关于它的信息,即使在C#规范中也是如此.
我选择使用属性文件来自定义某些设置.我使用以下代码在类中提供属性对象
Properties defaultProps = new Properties();
try {
FileInputStream in = new FileInputStream("custom.properties");
defaultProps.load(in);
in.close();
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我是否必须将此添加到每个班级?可能不是因为那时每个类都会打开一个流到这个文件.但我不确定如何妥善处理这个问题.我应该创建一个类MyProperties并在任何类需要属性中实例化它吗?
提前致谢!
我要简短地说一下.我想要实现自己的AES加密/解密程序已经有一段时间了.加密程序运行良好,加密没有任何错误或奇怪的输出(因为我已经将我的程序的输出与工作的商业输出进行比较,结果是相同的).
维基百科是我在这个实现中的指南,我在其中读到"使用相同的加密密钥将一组反向回合应用于将密文转换回原始明文."
我实现了几个模块:
我还实现了上面模块的几个反向实现:
注意:我没有实现反向轮密钥,因为它是用加密密钥对明文进行异或,而异或的反转是异或(如果我错了,请纠正我)
所以我按照我加密的相反顺序推出这些模块,但从来没有得到我的纯文本:
expandkey128(key);
rev_subbytes(data);
rev_shiftrows(data);
addroundkey(data,key,10);
for(int i = 9; i>= 1; i--) {
rev_subbytes(data);
rev_shiftrows(data);
rev_mixColum(data);
addroundkey(data,key,i);
}
addroundkey(data,key,0);
// Please note that I also did from 0 to 10 ,
// instead of 10 to 0 and didn't workout
Run Code Online (Sandbox Code Playgroud)
而且我想,也许我不应该实现模块的反向模型,也许我必须使用那些我加密的模块,只是按相反的顺序; 好吧猜怎么着?没用!:
expandkey128(key);
addroundkey(data,key,0);
for(int i = 1; i<= 9; i++) {
subbytes(data);
shiftrows(data);
mixColum(data);
addroundkey(data,key,i);
}
subbytes(data);
shiftrows(data);
addroundkey(data,key,10);
Run Code Online (Sandbox Code Playgroud)
所以这是一个问题:出了什么问题?|| 如果你愿意,应用这些所谓的模块或功能的正确顺序是什么?
有没有一种简单的方法来确定浮点数的符号?
我进行了实验并想出了这个:
#include <iostream>
int main(int argc, char** argv)
{
union
{
float f;
char c[4];
};
f = -0.0f;
std::cout << (c[3] & 0x10000000) << "\n";
std::cin.ignore();
std::cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
其中(c [3]&0x10000000)为负数给出的值> 0但我认为这要求我做出以下假设:
如果任何这些假设错误或者我错过了任何假设,请纠正我.
我不是想做任何这样的事情,但我想知道是否可以在C中实现"整个操作系统"(不一定像Linux或Microsoft Windows那样大,但更像是一个类似DOS的操作系统)和/或C++使用no或little程序集.
通过实现操作系统,我的意思是从头开始使用C或C++将启动加载程序和内核启动到图形驱动程序(以及可选的GUI).通过编译器访问低级功能,我在C++中看到了一些低级的东西.这可以在整个操作系统上完成吗?
我不是在问这是不是一个好主意,我只是想问它是否可以远程实现?
家伙.我想我已经创建了一个AVL树实现,但由于AVL Tree是一个非常复杂的结构,我需要测试它.所以问题是 - 我该如何测试呢?你有什么想法吗?到目前为止,我有以下测试:
基本健全性检查 - 检查每个节点高度是否等于最大值.子节点的高度+ 1,余额在[-1,1],左子键<此节点的键<右子键,并且没有循环引用(如节点的左子节点本身就是节点);
检查AVL树上的inorder遍历(以及整个二进制搜索树)将按顺序从底层集返回值;
检查AVL树的高度是否严格小于1.44*log2(N + 2)-1(N是元素数) - 由AVL树创建者证明;
视觉检查 - 效果不好,我尝试画一棵树(第一行的rootnode,下一行的直接孩子,第三行的rootnode直接孩子的孩子,等等),但这只适用于小树,大树变得一团糟;
(?????)俄罗斯维基百科说,实验证明,两次插入需要一次重新平衡,五次移除也需要一次重新平衡,但实际上是这样吗?英语维基百科对此一无所知,对于我的AVL,需要进行两次插入或四次删除所需的重新平衡,这并不完全相同.
也许这些测试已经足够,但如果还有更多测试,不难实现,为什么不这样做?
当使用CreateWindow动态创建控件(例如编辑控件)时,它通常以丑陋(粗体无衬线字体)字体开始.
通常我通过抓住父对话框的字体并将其设置为控件来解决这个问题 - 我甚至不能说这是不是一个好主意.
我如何"合法"获取正确的字体?
从源代码编译FluidSynth 1.1.1.我使用glib进行了未解析的外部符号,使用Visual C++ Express 2010,如何在IDE中正确链接glib.lib?我也需要wsock库吗?
1>------ Build started: Project: fluidsynth_dll, Configuration: Release Win32 ------
2>------ Build started: Project: fluidsynth_lib, Configuration: Release Win32 ------
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(C:\Users\Wildfire\Desktop\fluidsynth-1.1.1\winbuild\fluidsynth_dll\.\Release\fluidsynth_dll.dll) does not match the Linker's OutputFile property value (C:\Users\Wildfire\Desktop\fluidsynth-1.1.1\winbuild\fluidsynth.dll). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(992,5): warning MSB8012: TargetName(fluidsynth_dll) does not match the Linker's OutputFile property value (fluidsynth). …Run Code Online (Sandbox Code Playgroud) 我的计算机图形作业是仅使用绘制点的能力来实现OpenGL算法.
所以显然我需要开始drawLine()工作才能画出其他东西. drawLine()必须仅使用整数来完成.没有浮点.
这就是我的教导.基本上,线可以分为4个不同的类别,正陡,正浅,负陡和负浅.这是我应该画的图片:

这是我的程序绘制的图片:

颜色是为我们完成的.我们给出了顶点,我们需要使用Bresenham的Line算法根据起点和终点绘制线条.
这是我到目前为止:
int dx = end.x - start.x;
int dy = end.y - start.y;
//initialize varibales
int d;
int dL;
int dU;
if (dy > 0){
if (dy > dx){
//+steep
d = dy - 2*dx;
dL = -2*dx;
dU = 2*dy - 2*dx;
for (int x = start.x, y = start.y; y <= end.y; y++){
Vertex v(x,y);
drawPoint(v);
if (d >= 1){
d += dL;
}else{
x++;
d += dU;
} …Run Code Online (Sandbox Code Playgroud) 我有一个结构malloc()'d,在使用它们之后,我想释放()它,但我的程序冻结在这里.谁能告诉我,我做错了什么?
这是我的代码:
struct data
{
char *filename;
char *size;
};
//primarypcs is a long type variable
struct data *primary = (struct data *)malloc( primarypcs * sizeof( struct data ) );
memset( primary, 0, sizeof(struct data *) * primarypcs );
...
...
...
for ( i = 0; i < primarypcs; i++ )
{
free( primary[i].filename ); //<----my program freezes here
free( primary[i].size ); //<----or here
}
free( primary );
Run Code Online (Sandbox Code Playgroud)
提前致谢!
kampi
编辑:
我如何正确malloc内存的文件名和大小?
EDIT2:
对不起,但我很着急,我没有告诉你所有你需要的信息.现在让我这样做:)基本上,我想创建一个应用程序,它获取两个给定驱动器/文件夹的文件列表,然后比较它们.我想(并且仍然这样),最简单的方法是,当我将文件名及其大小存储在如上所述的结构中时.所以我必须动态分配内存(我认为这就是他们所说的)文件名和大小以及结构的内容.
c ×3
c++ ×3
aes ×1
algorithm ×1
avl-tree ×1
bresenham ×1
c# ×1
cryptography ×1
fonts ×1
free ×1
graphics ×1
java ×1
malloc ×1
pointers ×1
properties ×1
signedness ×1
testing ×1
visual-c++ ×1
winapi ×1
windows ×1