小编bob*_*obo的帖子

Iphone - 如何使用公钥加密NSData并使用私钥解密?

我正在将UIImage转换为NSData.现在我需要使用公钥加密NSData,我需要使用私钥解密.请提供一步一步的程序.我需要使用哪种算法?有没有好的加密和解密库?还提供一些用于加密和解密的代码段.

iphone encryption nsdata

26
推荐指数
2
解决办法
3万
查看次数

让宏'返回'一个值

我正在使用宏,我认为它工作正常 -

#define CStrNullLastNL(str) {char* nl=strrchr(str,'\n'); if(nl){*nl=0;}}

因此它可以将字符串中的最后一个换行清零,实际上它用于在fgets保持不变时切断换行符.

所以,我想知道我是否可以从宏中"返回"一个值,因此它可以被称为

func( CStrNullLastNL( cstr ) ) ;

或者我必须写一个函数

c++ macros return-value

19
推荐指数
5
解决办法
6万
查看次数

编写单元测试的好方法

所以,我之前并没有真正参与编写单元测试的实践 - 现在我很喜欢,我需要检查一下我是否在正确的轨道上.

假设你有一个处理数学计算的课程.

class Vector3
{
public:  // Yes, public.
  float x,y,z ;
  // ... ctors ...
} ;

Vector3 operator+( const Vector3& a, const Vector3 &b )
{
  return Vector3( a.x + b.y /* oops!! hence the need for unit testing.. */,
                  a.y + b.y,
                  a.z + b.z ) ;
}
Run Code Online (Sandbox Code Playgroud)

我有两种方法可以真正想到在Vector类上进行单元测试:

1)手工解决一些问题,然后将数字硬编码到单元测试中,只有在等于你的手和硬编码结果时才通过

bool UnitTest_ClassVector3_operatorPlus()
{
  Vector3 a( 2, 3, 4 ) ;
  Vector3 b( 5, 6, 7 ) ;

  Vector3 result = a + b ;

  // …
Run Code Online (Sandbox Code Playgroud)

unit-testing

18
推荐指数
1
解决办法
2341
查看次数

将Vertex Buffer Object用于非常动态的数据是一个好主意吗?

我有许多粒子,每个帧都会改变顶点.当前正在使用"客户端"内存中的顶点数组绘制顶点.如果我使用顶点缓冲区对象,我可以期待什么性能特征?

因为我必须使用一些glBuffersubData来更新粒子顶点,所以我无论如何都要将每个帧的顶点转移到视频内存(就像我使用常规顶点数组一样)?在这种情况下,VBO有什么好处吗?

这适用于iOS设备.实际的绘制调用:glDrawElements(GL_POINTS,num_particles,GL_UNSIGNED_SHORT,pindices);

我应该使用GL_STREAM_DRAWGL_DYNAMIC_DRAW

iphone graphics opengl-es vbo

17
推荐指数
2
解决办法
4781
查看次数

从函数返回STL向量 - 复制成本

从函数返回stl向量时:

vector<int> getLargeArray() {  ...  }
Run Code Online (Sandbox Code Playgroud)

回报是否是昂贵的复制操作?我记得在哪里读过矢量分配很快 - 我应该要求调用者传递引用吗?

void getLargeArray( vector<int>& vec ) {  ...  }
Run Code Online (Sandbox Code Playgroud)

c++ stl stdvector

17
推荐指数
2
解决办法
2万
查看次数

Photoshop混合模式到没有着色器的OpenGL ES

我需要在我的OpenGL ES 1.1代码中模仿Photoshop混合模式("乘法","屏幕"等)(没有着色器).

有一些关于如何使用 HLSL 执行此操作的文档:

我至少需要工作屏幕模式.

我可能会看到固定管道上的任何实现吗?

photoshop opengl-es

16
推荐指数
2
解决办法
2万
查看次数

调用析构函数或调用`delete`时是否释放内存?

假设你有一个对象class Fool.

class Fool
{
    int a,b,c;
    double* array ;
    //...
    ~Fool()
    {
        // destroys the array..
        delete[] array ;
    }
};


Fool *fool = new Fool() ;
Run Code Online (Sandbox Code Playgroud)

现在,我知道你不应该,但有些傻瓜fool无论如何都会调用析构函数. fool->~Fool();.

这是否意味着fool释放了内存,(即a,b,c无效)或者这是否意味着只有~Fool()函数中的解除分配(即数组只被删除?)

所以我想我的问题是,析构函数只是delete在对象上调用时调用的另一个函数,还是它做了更多?

c++ destructor memory-management

15
推荐指数
2
解决办法
4372
查看次数

为什么颠簸存放?

为什么BMP图像是颠倒存储和零填充的,因此它们是四字节对齐的?

windows legacy image bmp

15
推荐指数
1
解决办法
6584
查看次数

"指向最后一个元素的指针"的更漂亮的语法,std :: vector?

我想知道是否有更漂亮的语法来获得C++向量中最后一个元素的普通指针(不是迭代器)

std::vector<int> vec;

int* ptrToLastOne = &(*(vec.end() - 1)) ;

// the other way I could see was
int* ptrToLastOne2 = &vec[ vec.size()-1 ] ;
Run Code Online (Sandbox Code Playgroud)

但这些都不是很好看!

c++ stl vector stdvector

14
推荐指数
3
解决办法
1万
查看次数

汇编JLE jmp指令示例

你如何使用跳转系列指令?

这就是他们所拥有的:

JL标签
"It"如果小于或不大于或等于,则跳跃.

我的问题是什么是在这句话?说我有一个变量ebx,我想跳到标签there:,如果ebx<= 10.

具体来说,我对使用x86跳转指令系列感兴趣

x86 assembly mnemonics

14
推荐指数
2
解决办法
6万
查看次数