一个字符串10进制转16进制的问题

zsllrtx 2007-09-10 03:23:18
各位大虾:

比如一个字符串: "999999999999",共12位, 把这个字符串转成16进制的, 存放在一个unsigned char array[5]中. 怎么做? 能否给个程序
如果没有看懂, 就用windows的计算器输入一个十进制的 9999999999...
12位,再点击16进制,就可以看到E8D4A50FFF, 因此把这个E8D4A50FFF,2位一个字节存入 array中.
...全文
271 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
_石头_ 2007-09-11
  • 打赏
  • 举报
回复
不好意思,越推越麻烦了,原本打算用字符数组整形移位的方式来做的,才推到5位就有点不好办了!等那天有空再好好考虑一下算法!
_石头_ 2007-09-10
  • 打赏
  • 举报
回复
呵呵!感觉不是很难,待会晚上我试试看,能不能写个任意长度的转换代码!虽然感觉没问题,不过也不保证能成功啊!-----^_^
zsllrtx 2007-09-10
  • 打赏
  • 举报
回复
楼上的是正确的.
可是,如果当前的编译器 只有int,long, char 及 无符号的该三类数据类型, 这个该咋整. 麻烦了
Treazy 2007-09-10
  • 打赏
  • 举报
回复
给你一段代码参考一下吧!
#define FUN(x,y) (((__int64)y & ((__int64)0xFF << (8*(x)))) >> (8*(x)))
main()
{
__int64 a =999999999999;
int Ch[5],i;

for(i = 0; i < 5; i++)
{
Ch[i] =(int)(FUN(i, a));
}
for(i = 4; i >= 0; i--)
{
printf("%0.2x", Ch[i]);
}
}
Treazy 2007-09-10
  • 打赏
  • 举报
回复
to dfczj()
你的代码根本是错的,
---------------------------
zsllrtx 2007-09-10
  • 打赏
  • 举报
回复
999999999999,12个9, 不是long型能够表示的了呢.
而且,不用double型将 一个12位的数字,转换成十六进制,
用计算器看看呀...
dfczj 2007-09-10
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
int main(){

char *a="999999999999";
char b[5];
long c=atol(a);
sprintf(b,"%x",c);
printf("%s\n",b);
return 0;

}
IfI 2007-09-10
  • 打赏
  • 举报
回复
进制转换:
char str[100];
string str1(itoa(current_instant_number, str, 2));

把最后一个参数2改成16

至于将一个字符串转换为数字,这样办:

char c[]="999999999\0";
char *EndPtr;
int i;
i=strtol(c,&EndPtr,16);
printf("十六进制数:0x%s,被转化为十进制数:%d,验证数:%d",c,i,0xabe5);

自己加上适当的字符串类型转换处理
IfI 2007-09-10
  • 打赏
  • 举报
回复
要点1:
进制转换:
char str[100];
string str1(itoa(current_instant_number, str, 2));

要点2:
两位数一存一个字符里:
str[0]<<4 + str[1] = array[0]


搞定
给分

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧