c++ - 类型转换为整数

标签 c++ casting char

假设我有

    unsigned char * buffer; // buffer len in 10000

我想将 buffer+50 转换为 buffer+54 到 int。以下代码有效

    int c=(*((int *) (buffer+ 32));

但是有没有更好的方法来做到这一点以及需要多少指令?

非常感谢。

最佳答案

像这样的东西会起作用:

std::uint32_t convert_to_int32(std::uint8_t* buffer) // assume size 4
{
    std::uint32_t result = (static_cast<std::uint32_t>(buffer[0]) << 24) |
                           (static_cast<std::uint32_t>(buffer[1]) << 16) |
                           (static_cast<std::uint32_t>(buffer[2]) << 8) |
                           (static_cast<std::uint32_t>(buffer[3]));
    return result;
}

当前方法的主要问题是遇到对齐问题(例如,您尝试从缓冲区中不在整数对齐屏障上的点转换整数指针)。移位方法解决了这个问题。

关于c++ - 类型转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23019561/

相关文章:

c++ - C(++) 中的 sprintf、逗号和点(以及本地化?)

c++ - 将 boost::shared_array<void> 转换为 boost::shared_array<int>

c++ - 如何将表示像素的字符数组读取为 unsigned int

c++ - 在 C++ 中分配给类型 char(不是 String)时如何转义字符

c++ - 从 int 到 char,逐字节发送

java - 如何在不暂停程序的情况下获取字符

c++ - apply_visitor 不改变对象

c++ - C++中的类成员函数指针

java - 在抛出旧异常的同时抛出新异常

C : Convert Char To Float Produce 0. 000002?