我正在研究我的Elliptic Curve Cryptography项目,该项目需要在二进制字段上进行编程.它包括基本运算,如加法,乘法,反演等,这是一种不可约的二元多项式.
我正在寻找一种方法,通过这种方式可以将这些二进制多项式存储在程序中.我正在研究C和C++编程语言(使用gmp库)所以我想到的第一个想法是使用结构和位字段.但它们不是动态的,不能保持任意长的多项式.使用C++ Vector STL是可能的,但它不会有效,因为它在8位或更多位的单个字中存储单个位.
是否有任何有效的表达方式?
我试图尝试在两个变量中交换值时遇到分段错误.我的代码是:
void swap(int *a,int *b){
int *temp;
*temp=*a;
*a=*b;
*b=*temp;
}
int main(){
int i=1,j=0;
printf("Before %d,%d\n",i,j);
swap(&i,&j);
printf("After %d,%d\n",i,j);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Before 1,0
After 0,1
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)
对我来说神秘的是在成功交换值后产生错误.什么是虫子?我需要在任何地方对指针进行类型转换吗?
但他们的回答都没有帮助我。在调试了这么多小时后,我无法检测到错误。所以,我再次在这里问它。
我的程序的代码是:
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
int main(){
ofstream file;
file.open("data.dat",fstream::out);
file<<fflush;
if(!file)
cout<<"error"<<strerror(errorno);
file.close();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是处理文件处理的程序的主要部分。程序的其余部分处理一些数据并将其写入文件,我认为这既不相关也不影响文件处理。
有趣的是程序没有闪烁任何错误。