在 C 中将 Char 数组转换为 Long

标签 c memory

这个问题可能看起来很傻,但请指导我 我有一个将长数据转换为字符数组的函数

void ConvertLongToChar(char *pSrc, char *pDest)
{
    pDest[0] = pSrc[0];
    pDest[1] = pSrc[1];
    pDest[2] = pSrc[2];
    pDest[3] = pSrc[3];
}

我这样调用上面的函数

long lTemp = (long) (fRxPower * 1000);
ConvertLongToChar ((char *)&lTemp, pBuffer);

效果很好。 我需要一个类似的功能来扭转这个过程。将 char 数组转换为 long。 我不能使用 atol 或类似的功能。

最佳答案

你可以这样做:

union {
 unsigned char c[4];
 long l;
} conv;

conv.l = 0xABC;

并访问c[0] c[1] c[2] c[3]。这很好,因为它不浪费内存,而且速度非常快,因为除了初始值之外没有移位或任何赋值,而且它可以双向工作。

关于在 C 中将 Char 数组转换为 Long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6687467/

相关文章:

.net - .NET 会随时接管 C/C++ 吗?

union 体可以在声明中初始化吗?

Java - 如何在 Java 中创建具有所需大小的变量?

java - 解决 java.lang.StackOverflowError 内存问题

android - android中的内存模拟

memory - 使用 directX 时释放 GPU 内存的正确方法?

Python,使用 ctypes 创建 C++ 类包装器

c - 使用 gethostbyname 的 DNS

c - 关于ncurses中无输出

python - Python 是否有堆栈/堆以及如何管理内存?