memcpy windows linux,linux memcpy_s

%x不带符号。你这样试试

if (a < 0){

printf("-"); a = 0 - a ;

}//加上这个。

printf("%x ",a);

######

引用来自“中山野鬼”的答案

%x不带符号。你这样试试

if (a < 0){

printf("-"); a = 0 - a ;

}//加上这个。

printf("%x ",a);

输出的结果变成了这样,72 65 67 66 -60 0 0 0 -60 0 0 0 -7d 63 -75 47。还是不对啊,原文是这个7265 6766 3f00 0000 3f00 0000 3f63 3f47。中间有好多的3f,但是每次读取并打印的值都不一样。

######这我就不知道了。就从你目前的代码来看是没问题的。其实我那个"-"是多余(如果你尝试把char 改成 int)。######你查下别的原因,或者把文件传给我。我帮你测一下。

######

printf

(

"%x "

,(unsigned char)a);######

引用来自“中山野鬼”的答案

你查下别的原因,或者把文件传给我。我帮你测一下。

怎么传给你? 那个二进制文件就是windows的注册表文件 在C:\windows\system32\config\SAM

######OK。我马上测一下。用VC写个看看。

######

引用来自“TrulyBelieve”的答案

printf

(

"%x "

,(unsigned char)a);

这个没用,试过了

如果用用char,就是是这样子ffffffa0

######

http://code.google.com/p/srgb/source/browse/printHexString/main.cpp

void printHexStr(const void* buf , size_t size)

{

unsigned char* str = (unsigned char*)buf;

char line[512] = {0};

const size_t lineLength = 16; // 8或者32

char text[24] = {0};

char* pc;

int textLength = lineLength;

for (size_t ix = 0 ; ix < size ; ix += lineLength) {

sprintf(line, "%.8xh: ", ix);

// 打印16进制

for (size_t jx = 0 ; jx != lineLength ; jx++) {

if (ix + jx >= size) {

sprintf(line + (11 + jx * 3), " "); // 处理最后一行空白

if (ix + jx == size)

textLength = jx; // 处理最后一行文本截断

} else

sprintf(line + (11 + jx * 3), "%.2X ", * (str + ix + jx));

}

// 打印字符串

{

memcpy(text, str + ix, lineLength);

pc = text;

while (pc != text + lineLength) {

if ((unsigned char)*pc < 0x20) // 空格之前为控制码

*pc = '.'; // 控制码转成'.'显示

pc++;

}

text[textLength] = '\0';

sprintf(line + (11 + lineLength * 3), "; %s", text);

}

printf("%s\n", line);

}

}

######谢谢你的代码######我试了。代码本身没问题。不过你说的文件SAM。我无法进行COPY。说正在被别的程序使用。我尝试了另一个二进制文件,没有任何问题。 (当然我是用 "rb",不是“rb+")。你如果可以fopen SAM,如果还出现你说的问题。那么可以证明,这个文件本身在不停的被改写。我使用UE打开SAM,也出现文件共享错误,而禁止打开。

######

引用来自“中山野鬼”的答案

我试了。代码本身没问题。不过你说的文件SAM。我无法进行COPY。说正在被别的程序使用。我尝试了另一个二进制文件,没有任何问题。 (当然我是用 "rb",不是“rb+")。你如果可以fopen SAM,如果还出现你说的问题。那么可以证明,这个文件本身在不停的被改写。我使用UE打开SAM,也出现文件共享错误,而禁止打开。

我是复制到了linux下面,操作的,不存在共享的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值