当前位置:首页 » 编程语言 » c语言转换为代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言转换为代码

发布时间: 2022-07-03 15:04:10

1. 如何将下面c语言代码转换成Java代码

完整的直译为java方法是这样的,但是这样写dataLen的值必须小于等于数组长度,不然会出现下标越界的异常

public int accumulativeVerification(int[] data, int dataLen) {
    int sum = 0;
    for (int i = 0; i < dataLen; i++) {
        sum += data[i];
    }
    return sum;
}

如果是意译(计算int数组的所有数之和),那么java可以这样写

public int accumulativeVerification(int[] data) {
    int sum = 0;
    for (int i = 0; i < data.length; i++) {
        sum += data[i];
    }
    return sum;
}

2. 在C语言中如何将汉字或者字符串转换成二进制代码或者ASCII代码

我记得好像汉字是用点阵存储的,就是把字形用点阵表示出来,具体细节不是很清楚,字符串可以用数组存储,拆分成一个一个的字符,一个字符对应一个ASCII码

3. 如何将C语言代码转换为对应的汇编代码

VC6.0下有两种方法:
(1)增加参数/FA:Project->Setting...,C/C++选项卡中的Project Options中增加参数/FA,编译后debug目录中将会增加对应源文件的汇编文件(*.asm)。
(2)如果想查看C语句对应的汇编代码的话,可以这样:F11单步调试,在debug工具栏中选择“disassembly”即可。每行C代码下面就是对应的汇编代码。
如果debug工具栏不见了,可在VC上方空白菜单处右键,选择“debug”即可弹出debug工具栏。

例如:
C代码程序:
int main()
{
int a = 3;
int b = 4;
int c = a + b;
printf("c=%d/n", c);

return 0;
}

对应的汇编代码程序(部分)如下:
5: int a = 3;
00401028 mov dword ptr [ebp-4],3
6: int b = 4;
0040102F mov dword ptr [ebp-8],4
7: int c = a + b;
00401036 mov eax,dword ptr [ebp-4]
00401039 add eax,dword ptr [ebp-8]
0040103C mov dword ptr [ebp-0Ch],eax

gcc下编译加参数-S,如gcc a.c -S,编译后会自动生成汇编文件a.asm。

4. c语言如何将一段自定义的buff转换成可执行的代码

__declspec(noinline)voidhelloworld()
{
printf("helloworld");
"helloworld"(4221E0h)
004017C5E878A40000callprintf(40BC42h)
004017CA59popecx
}

因为代码生成的汇编指令call是相对位置的

E8 78 A4 00 00 这个, e8表示相对地址调用,后面78 A4 00 00 表示的 当前的地址和printf函数地址的偏移。


如果自己memcpy复制后,helloworld函数的地址变了,那个call指令和 printf函数的偏移距离也变了。所以就出错了。


所以这个复制代码的方式要正常工作的话,这段代码必须是位置无关的,也就是

Position-independentcode

gcc里面可以指定pic选项来让编译器生成位置无关的代码。vc里面找了一下没找到。

所以只能使用汇编才行了。


charformat[]="%s%s ";
charhello[]="Hello";
charworld[]="world";
staticintprintf_addr=(int)&printf;

__declspec(noinline)voidhelloworld()
{
//printf("helloworld");
__asm
{
moveax,offsetworld
pusheax
moveax,offsethello
pusheax
moveax,offsetformat
pusheax
//callprintf
moveax,printf_addr
calleax
//
//
popebx
popebx
popebx
}
}


这样写之后,这个call指令那里,生成的机器码采用的是绝对值的FF,就可以正常工作了。


所以这种用法的话,还是自己手写位置无关的汇编才行,或者需要会自己做重定位的。就像上面那个一样 自己知道call指令的那里的话,可以自己修改偏移为正确的值。

5. c语言怎么将文字转换成代码

算法设计的问题吧
先设计int
child[10]并初始化即每个小孩手上的糖
然后while控制循环条件即child中每个值相等跳出循环
循环是:所有的小孩同时将手中的糖分一半给右边的小孩;糖块为奇数的人可向老师要一块。
对应的child数组各值的变化,在while里加个统计次数的变量
思想大概就是这样
要自己动手去实现才能有进步

6. 把C语言代码转成Java代码

package dis;
import java.io.*;
import java.math.*;
public class dis
{
public static void main(String [] s) throws Exception
{
Float a,b,c;
double x2;
double x1;
System.out.println("请输入a, b, c的值");
BufferedReader bReader=new BufferedReader(new InputStreamReader(System.in));
a=Float.parseFloat(bReader.readLine());
b=Float.parseFloat(bReader.readLine());
c=Float.parseFloat(bReader.readLine());
if (b*b - 4*a*c <= 0)
System.out.println("输入的系数不对,b2-4ac不大于0!程序退出!");
else
{
x1 = (-b + Math.sqrt(b*b - 4*a*c))/2*a;
x2 = (-b - Math.sqrt(b*b - 4*a*c))/2*a;

System.out.println("x1 = "+ x1);
System.out.println("x2 = "+x2);
}
return;
}

}

7. C语言采用解释方式将源程序转换为二进制的目标代码吗

不是,C语言采用编译方式将源程序转换为二进制的目标代码。使用C语言编译器来完成。

所谓C语言编译器,就是把编程得到的文件,比如.c,.h的文件,进行读取,并对内容进行分析,按照C语言的规则,将其转换成cpu可以执行的二进制文件。其本质在于对文件的读入,分析,及处理。

C语言编写的程序代码称为源程序,对于计算机本身来说,它并不能直接识别由高级语言编写的程序。C语言程序经C语言编译程序编译后,生成后缀为.obj的二进制文件(称为目标文件)。

此.obj文件必须与系统提供的各种库函数连接起来生成一个后缀为.exe的可执行文件才可以执行。C语言的可执行文件由一系列机器指令构成的。

(7)c语言转换为代码扩展阅读

解释执行和编译执行是计算机语言的执行方式。解释执行由解释器现场解释执行,不生成目标程序。如BASIC便是解释执行,一般解释执行效率较低,低于编译执行。

编译执行由编译程序将目标代码一次性编译成目标程序,再由机器运行目标程序。如:PASCAL,C,C++,delphi等语言。效率高于解释执行。

8. 怎么把这个C语言代码转化为c++代码

实际上这段代码也算是C++代码,C语言是C++的子集,这段代码可以使用C++编译器编译的。

如果一定要改这段代码的话,也只能替换输入输出语句了:


#include <iostream>

using namespace std;

int main()
{
int n,r,i;

while(cin >> n >> r) {
if(n<0) {
cout << '-';
n=-n;
}
if(n==0) {
cout << '0' << endl;
continue;
}

int c=0, a[100];
while(n) {
a[c] = n % r;
c++;
n /= r;
}
for(i=c-1;i>=0;i--) {
if(a[i]>=10) {
cout << 'A' + a[i] - 10;
} else {
cout << a[i];
}
}
cout << endl;
}
}

9. c语言中字符串能否转为代码执行或者有什么替代办法

在循环中是不可以用宏定义的方法来实现的,因为宏是在编译前替换,不会根据代码逻辑来。

用数组肯定是最合理的,多个变量的方法,有一种不安全的方法来做,就是使用野指针。

前提:变量连续定义,这样他们在内存中的地址就是连续的。

之后用一个int指针:

int*pi=&data1;
pi++;//就指向data2了

但这个方法,不是安全方法,如果是商业项目,不推荐使用。

10. C语言中如何将字符转变为ASCII代码值

你想问什么问题啊??
ascii
美国标准信息交换标准码
(
american
standard
code
for
information
interchange,
ascii
)
在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机比较傻,只有0和1两位数的二进制比较适合于它使用),同样的,象a、b、c、d这样的52个字母(包括大写)、以及0、1、2等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪个数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通讯而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了所谓的ascii编码,统一规定了上述常用符号用哪个二进制数来表示。
美国标准信息交换代码是由美国国家标准学会(american
national
standard
institute
,
ansi
)制定的,标准的单字节字符编码方案,用于基于文本的数据。起始于50年代后期,在1967年定案。它最初是美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准,它已被国际标准化组织(international
organization
for
standardization,
iso)定为国际标准,称为iso
646标准。适用于所有拉丁文字字母。
ascii
码使用指定的
7
位或
8
位二进制数组合来表示
128

256
种可能的字符。标准
ascii
码也叫基础ascii码,使用
7
位二进制数来表示所有的大写和小写字母,数字
0

9、标点符号,
以及在美式英语中使用的特殊控制字符。其中:
0~32及127(共34个)是控制字符或通讯专用字符(其余为可显示字符),如控制符:lf(换行)、cr(回车)、ff(换页)、del(删除)、bs(退格)、bel(振铃)等;通讯专用字符:soh(文头)、eot(文尾)、ack(确认)等;ascii值为
8、9、10

13
分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。
33~126(共94个)是字符,其中48~57为0到9十个阿拉伯数字;
65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
同时还要注意,在标准ascii中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
后128个称为扩展ascii码,目前许多基于x86的系统都支持使用扩展(或“高”)ascii。扩展
ascii
码允许将每个字符的第
8
位用于确定附加的
128
个特殊符号字符、外来语字母和图形符号。