Socket网络编程如何将浮点型数据转换为整形并在接收端进行恢复

    xiaoxiao2024-12-10  60

    概述:在网络编程中将浮点型数据转换为整形,用于传输,然后在接受端进行恢复。注意该操作是按字节进行操作的,在转换过程中不必关闭整型中间值,重点是将浮点型数据转换后,能在接收端能正确恢复成浮点型数据。

    浮点型转为整型 int double2int(double m_fd) { int nIntMax = 0; int nInt, n_fd; nIntMax = 1 << 31; nIntMax -= 1; unsigned char* uch = new unsigned char[4]; n_fd = (m_fd / 180.0)*nIntMax; uch[0] = (unsigned char)(n_fd & 0xFF); uch[1] = (unsigned char)((n_fd >> 8) & 0xFF); uch[2] = (unsigned char)((n_fd >> 16) & 0xFF); uch[3] = (unsigned char)((n_fd >> 24) & 0xFF); memcpy(&nInt, uch, 4); if (nullptr != uch) { delete[] uch; } return nInt; }

    将浮点型数据按小端模式,依次取出字节并保存到unsigned char[],然后将该数组copy到一个整型的内存区间,用于网络传输。

    整型转浮点型 double int2double(char* uchData) { int* p = nullptr; int nIntMax = 0; double m_fdouble; nIntMax = 1 << 31; nIntMax -= 1; p = (int*)(&uchData[0]); m_fdouble = ((double)(*p) / nIntMax)*180.0; return m_fdouble; }

    按照浮点型转整型的逆序方式,进行数据恢复。注意应该将整型数据按小段模式依次将整型的字节保存到char[]数组。

    char ch[4]; ch[0] = m_nd & 0xff; ch[1] = (m_nd >> 8) & 0xff; ch[2] = (m_nd >> 16) & 0xff; ch[3] = (m_nd >> 24) & 0xff; 存储方式:大端模式 and 小端模式

           小端模式:数据的低字节保存在内存低地址,高字节保存在内存高地址

           大端模式:数据的低字节保存在内存高地址,高字节保存在内存低地址

    最新回复(0)