Chinaunix

标题: 十六进制for循环 [打印本页]

作者: ckf513728912    时间: 2013-01-18 17:16
标题: 十六进制for循环
还有一个疑问数据拼接
  6         int     i;
  7         char a[SIZE]="00E3";
  8         char b[SIZE]="10";
  9         char c[SIZE];
10         char d[SIZE];
11         char    *s=NULL;
12         for(i=0x0080; i<=0x0180;i++){
13                 memset(d,0,SIZE);
14                 sprintf(c,"%04X",i);
15                 puts(c);
16 //              s=strcat(strcat(a,b),c);
17 //              puts(s);
18 //              strcpy(d,s);
19 //              printf("%s\n",d);
20                 i+=0x0010;
21         }

小弟弟那个strcat写得有问题, 想要达到效果是某个参数改变其它不变
比如
00E3008010
00E3009010
00E300A010
00E300B010
00E300C010
00E300D010
00E300E010
............


怎么去实现比较好,3Q
作者: linggang_123    时间: 2013-01-18 17:43
int     i;
char a[SIZE]="00E3";
char b[SIZE]="10";
char c[SIZE];
char d[SIZE];
char    *s=NULL;
for(i=0x0080; i<=0x0180;i++)
{
memset(d,0,SIZE);
memset(c, 0, SIZE);
sprintf(c,"%04X",i*0x0F);  // 在使用之前需要进行初始化。。不然里面有脏数据。
puts(c);
strcat(a, c);
s = strcat(a, b);

//s=strcat(strcat(a,b),c);
puts(s);
strcpy(d,s);
printf("%s\n",d);
//i+=0x0010;
}

作者: sqfasd    时间: 2013-01-18 17:46
  1. char buf[10];
  2. for(int i=0xE3008010;i<=0xE3018010;i+=0x1000){
  3.         snprintf(buf, 10, "%X", i);
  4.         puts(buf);
  5. }
复制代码
不知能满足要求否?
作者: ckf513728912    时间: 2013-01-18 18:07
回复 3# sqfasd


    谢谢您,还有没实现。for里面的参数是一个地址,不能那样直接的传,如果那样传的话会有问题。

我得写一个测试脚本,脚本格式如下
00E3:脚本命令
0080:这个是要读的地址位置
10:这是要读出的长度

非常感谢您
作者: ckf513728912    时间: 2013-01-18 18:14
回复 2# linggang_123


    谢谢您,还没有实现我想要的功能。
我想测试一个硬件里的东西是否正确.
00E3表示脚本命令(不变)
0080表示地址(地址是变的)
10 表示要长度(不变)
作者: ckf513728912    时间: 2013-01-18 19:34
代码如下,可以实现。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define SIZE    1024

int main(){
        int     i;
        char a[SIZE]="10";
        char c[SIZE];
        char *s=NULL;
        for(i=0x00F20080; i<=0x00F20180;i++){
                memset(c,0x0,SIZE);
                sprintf(c,"%08x",i);
                s=strncat(c,a,2);
                puts(s);
                i+=0x000F;
        }

        return 0;
}



接近自己想要的功能了,发出来的不能当作命令来发送。有点郁闷,哪个大哥再帮忙出点主意。3Q
作者: lin5161678    时间: 2013-01-19 12:03
sprintf(c,"00E3%04X10",i);//即可
作者: ckf513728912    时间: 2013-01-20 21:50
回复 7# lin5161678


    谢谢你




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2