如何将类型float*转换为类型byte*,急!

preciousboy 2009-05-18 01:57:20
如题,c++中如何把float*转换为byte*,以及反过来byte*怎么转换为float*,搜索了相关的话题似乎也没有具体的方案,请大家帮帮忙,急急!
...全文
608 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
preciousboy 2009-05-18
  • 打赏
  • 举报
回复
嗯,这个问题,我弄明白了,谢谢各位
MMMoonriver 2009-05-18
  • 打赏
  • 举报
回复
xuexi
papaofdoudou 2009-05-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 preciousboy 的回复:]
谢谢楼上的几位的答复,但我发现用转换后的byte类型的指针输出的数值和原数值不一样,也就是如2楼说说的一样,float f = 1.0;
float *pf = &f;
byte *pb = (byte*)pf;
cout < <*pb < <endl; //输出的不是1
[/Quote]
不一样是正常的,指针的强制转换并没有改变变量在内存中的位模式,该是010101还是010101,只不过根据指针类型的不同对它的解释方式不同。
preciousboy 2009-05-18
  • 打赏
  • 举报
回复
谢谢楼上的几位的答复,但我发现用转换后的byte类型的指针输出的数值和原数值不一样,也就是如2楼说说的一样,float f = 1.0;
float *pf = &f;
byte *pb = (byte*)pf;
cout < <*pb < <endl; //输出的不是1
z_kris 2009-05-18
  • 打赏
  • 举报
回复

typedef unsigned char byte;
uion byte_to_float
{
float float_val;
byte byte_va[4];
};
learnboy007 2009-05-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liliangbao 的回复:]
C/C++ code普通的c++中并没有byte类型~
但是可以讲unsigned char当做byte类型~

再说byte*和float*转换:
可以直接强制类型转换,都是指针没有问题,但是float*指向float数据在内存存储形式可不能因为指针转换而跟着转换~
如:
float f = 1.0;
float *pf = &f;
byte *pb = (byte*)pf;
cout<<*pb<<endl; //输出的可不是1
[/Quote]
楼上说得对,C++中没有byte类型的。

float f = 0.9;
unsigned char *p = static_cast<unsigned char *>(&f); //p就是转换后的指针了,但是可能有问题。

liliangbao 2009-05-18
  • 打赏
  • 举报
回复
普通的c++中并没有byte类型~
但是可以讲unsigned char当做byte类型~

再说byte*和float*转换:
可以直接强制类型转换,都是指针没有问题,但是float*指向float数据在内存存储形式可不能因为指针转换而跟着转换~
如:
float f = 1.0;
float *pf = &f;
byte *pb = (byte*)pf;
cout<<*pb<<endl; //输出的可不是1
「已注销」 2009-05-18
  • 打赏
  • 举报
回复
看起来只能先转换到整型:
byte* = (byte*)(int*)p;
没测试,你试试。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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