用户登录
用户注册

分享至

char*转dword char数组转成dword

  • 作者: 阿里馬雲
  • 来源: 51数据库
  • 2020-04-17

一般来说,直接移位拼装即可。但是我理解,按照你的描述,貌似你的DWORD长度超过了cpu的寄存器的长度。如果是后者的话,不妨这样做:

struct _dword{

word lo; // 假设cpu寄存器长度16位,word长度16位

word hi;

};

struct _dword a;

char b[4] = {0x12, 0x34, 0x56, 0x78};

a.lo = b[0] & 0x00FF + (b[1] & 0x00FF) << 8; // “与”操作将字符转为16位word,移位拼装。

a.hi = b[2] & 0x00FF + (b[3] & 0x00FF) << 8;

大概就是这样的。除此之外,还需要考虑尾序的问题。

对于更高位数的操作,基本原理是一样的。更多

我的意思是说:

假如int类型最大只能是1~100的数字,但是我现在的数字绝对是超过100了的,比如我是101,因此我如果先把101赋值给了int类型再用强制转换成(DWORD),则必然得到的值不会是101

所以想说有没有直接转化的函数,像是_ultoa()这样的直接把DWROD转化成char数组

如果你的立即数超出了你的基本数据类型的表达范围,不可能有直接转换的函数。

而且一旦立即数超出最长整形的表达范围,编译的时候会提示,并且会按字长进行截断。

比如我在程序中定义一个int数

int i=123456789123456789123456789;

那么在编译的时候会出现如下提示

moose@fuloong:~/code$ gcc test.c

test.c:16:9: warning: integer constant is too large for its type [enabled by default]

test.c:16:9: warning: overflow in implicit constant conversion [-Woverflow]

运行时显示:

2080661270

对的,我知道会被截断,我的意思就是说怎么才能直接转化成dword,而不先经过int在转成dword

没有方法,你用1L的瓶子运2L的水,只能两次搬运不是嘛?

你的开发环境里,word和dword都多长?

c++ 中char 数组 转成 DWORD

你用MAKEWORD(高,低)吧,最简单了,拆分用LOWORD和HIWORD,就行了

vc 如何char数组转换DWORD

问题多多

1. 数组大小为10,你搞了11个元素来初始化

2. 0x96超出了char的表示范围

3. &buff ,buf拼写错误, 不该取地址 即buf+4

buf取地址后+4是按数组长度加的4,而 buf+4是按int长度加的4

mfc中ip adrress control中的dword值转化为char *

DWORDaddress;

control.GetAddress(address);

charip[16];

sprintf(ip,"%d.%d.%d.%d",address>>24,(address>>16)&0xFF,(address>>8)&0xFF,address&0xFF);

字符串和DWORD类型之间如何相互转换

再把 dword转为字符串的也发出来

void HashToString(char *strHash,SHA1 hash,int iSize) //hash转成字符串

{

uchar *p=(uchar *)&hash;

char tmp[3]={0};

for (int j=0;j<iSize;j++)

{

sprintf(tmp,"%02X",(uchar)p[j]);

//OutputDebugString(tmp);

strcat(strHash,tmp);

}

//OutputDebugString(strHash);

}

​在VC++中将结构体转换为DWORD_PTR,该怎么从DWORD_PTR型的变量中得到结构体中每个元素的值呢?

DWORD_PTR就是DWORD,DWORD就是LONG,或ULONG。你可以这样:

student somebody;

DWORD_PTR pparam=(DWORD_PTR)&somebody;

student* pbody=(student*)pparam;

pbody->name;

分析:

这是指针的强制转化;指针可以转化为long类型的,又丛LONG强制转化为student的指针。

明白了吗?

转载请注明出处51数据库 » char*转dword char数组转成dword

软件
前端设计
程序设计
Java相关