请问一个位运算的有关问题`怎样将一个char[4]的字符串数组转正一个整数
请教一个位运算的问题``怎样将一个char[4]的字符串数组转正一个整数
例如现在有如下字符数组
int k = 0;
char szTmp[4] = {0, 0, 0, '4 '};
我想将这个szTmp代表的一个整数存到k里去,即8位8位的拷贝到k里去,请指教!
------解决方案--------------------
int k = 0;
char szTmp[4] = { '0 ', '0 ', '0 ', '4 '};
int i = 0;
//1
for (i = 0, k = 0; i < 4; i++)
{
k < <= 8;
k |= szTmp[i];
}
//2
k = *(int *)szTmp;
//3
for (i = 0, k = 0; i < 4; i++)
{
k < <= 8;
k |= szTmp[3 - i];
}
你这里没有说明要按照大端格式还是小端格式来转换,故上面几个转换的结果不一样,自己按照原来的意思使用某一个吧
另外,如果你希望得到结果4,那个使用:
for (i = 0, k = 0; i < 4; i++)
{
k < <= 8;
k |= (szTmp[i] - '0 ');
}
------解决方案--------------------
#include <math.h>
#include <iostream.h>
#define M 4
int main()
{
int k = 0;
char szTmp[M]={ '0 ', '2 ', '0 ', '4 '};
for(int i = M-1; i > = 0; i--)
{
k+=(szTmp[i] - '0 ')*pow(10,M-1-i);
}
cout < < k < < endl;
return 1;
}
------解决方案--------------------
int k = 0;
char szTmp[4] = { '1 ', '2 ', '3 ', '4 '};
int i;
for(i=0; i <4; i++)
k=k*10+szTmp[i]- '0 ';
cout < <k < <endl;
例如现在有如下字符数组
int k = 0;
char szTmp[4] = {0, 0, 0, '4 '};
我想将这个szTmp代表的一个整数存到k里去,即8位8位的拷贝到k里去,请指教!
------解决方案--------------------
int k = 0;
char szTmp[4] = { '0 ', '0 ', '0 ', '4 '};
int i = 0;
//1
for (i = 0, k = 0; i < 4; i++)
{
k < <= 8;
k |= szTmp[i];
}
//2
k = *(int *)szTmp;
//3
for (i = 0, k = 0; i < 4; i++)
{
k < <= 8;
k |= szTmp[3 - i];
}
你这里没有说明要按照大端格式还是小端格式来转换,故上面几个转换的结果不一样,自己按照原来的意思使用某一个吧
另外,如果你希望得到结果4,那个使用:
for (i = 0, k = 0; i < 4; i++)
{
k < <= 8;
k |= (szTmp[i] - '0 ');
}
------解决方案--------------------
#include <math.h>
#include <iostream.h>
#define M 4
int main()
{
int k = 0;
char szTmp[M]={ '0 ', '2 ', '0 ', '4 '};
for(int i = M-1; i > = 0; i--)
{
k+=(szTmp[i] - '0 ')*pow(10,M-1-i);
}
cout < < k < < endl;
return 1;
}
------解决方案--------------------
int k = 0;
char szTmp[4] = { '1 ', '2 ', '3 ', '4 '};
int i;
for(i=0; i <4; i++)
k=k*10+szTmp[i]- '0 ';
cout < <k < <endl;