在 c++ 中将 fl 转换为十六进制
Converting fl in hexadecimal in c++
我是C++和编程新手,我想编写一个C++程序,在指针的帮助下将浮点数转换为十六进制
我查看了其他线程,并真的试图掌握这一点,但似乎无法弄清楚。这是我到目前为止所做的:
int main()
{
float number = -12.0
unsigned char *ptr = ((unsigned char*) &number);
for (int i = 0; i < sizeof(float); i++)
{
cout << "Byte " [i] << "is : " << ptr[i] << endl;
}
因此,我假设我能够访问构成浮点数的字节。 但是,您能否提出任何将其转换为十六进制的想法。我想,我必须能够阅读这一切背后的二进制文件......但我真的不确定如何。
注意:我了解如何从二进制转换为十六进制<</p>
iostreams 可以打印十六进制的数字:
int main() {
float number=-1.0;
unsigned char *ptr = ((unsigned char*)&number);
for (int i = 0; i < sizeof(float); i++)
{
cout << "Byte ";
cout << setw(0) << dec << i << "is : ";
cout << setw(2) << setfill('0') << hex << ptr[i] << endl;
}
你想要的可能是这样的:
float number=-1.0;
char cz[]="0123456789ABCDEF";
int si=sizeof(float);
char* ptr=(char*)(&number);
for(int i=0;si-i;++i){
std::cout<<cz[((*ptr)&0xf0)>>4]<<cz[(*ptr)&0x0f]<<' ';
++ptr;
}
这里有小错误cout << "Byte " [i]
这与执行相同:
const char *text = "Byte ";
cout << text[i]
另一个小错误是ptr[]
char
因此cout
将其视为可打印字符(而不是数字),使用(int)ptr[i]
就可以了。此外,您希望打印i
为十进制,ptr[i]
为十六进制,因此您必须使用std::dec
和std::hex
cout << "Byte " << std::dec << i << " is : " << std::hex << (int)ptr[i] << endl;
您可以使用std::setw()
和<iomanip>
std::setfill()
对其进行一些润色:
#include <iostream>
#include <iomanip>
using std::cout;
using std::endl;
int main()
{
float number = -1.0;
unsigned char *ptr = ((unsigned char*) &number);
cout << std::setfill('0');
for (int i = 0; i < sizeof(float); i++)
{
cout << "Byte "
<< std::dec << std::setw(0) << i << " is : "
<< std::hex << std::setw(2) << (int)ptr[i] << endl;
}
return 0;
}
这将打印出:
Byte 0 is : 00
Byte 1 is : 00
Byte 2 is : 80
Byte 3 is : bf
相关文章:
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将十六进制转换为 DEC
- 将字符指针中的十六进制转换为十进制
- 使用 std::hex 将十六进制转换为十进制
- 将40个字节长的数据框从十六进制转换为二进制,然后转换为十进制
- 如何将十六进制转换为十进制
- 在C++中将十六进制转换为uint8_t
- 从十六进制转换为LPCVoid,切断了一半地址
- 将十六进制转换为可打印的字符串/字符
- 将 QString 十六进制转换为 ASCII 值
- 我如何在 C++ 中将变量从十六进制转换为 dec
- 混淆在C++中将十六进制转换为二进制
- C++中的十进制到十六进制转换代码
- 如何在C++中将十六进制转换为IEEE 754 32位浮点
- 十进制到十六进制转换错误
- 十进制到十六进制转换c++内置函数
- 如何将十六进制转换为字符串?C++
- 将 3d 数组元素从十六进制转换为二进制以获得 bmp
- C++:将十六进制转换为十进制
- 将十六进制转换为签名的十二月