首页 文章

C - 从整数数组插入和提取字符

提问于
浏览
2

例如:

char mem[100000];

int reg[8];

mem[36] = 'p';         // add char p to our 36th index of our char array

reg[3] = (int)mem[36]; // store value of mem[36] into reg[3]
  • 现在我想在该int数组的索引3处打印char值 .

  • 到目前为止,我的思考过程引导我进行如下代码:

char * c =(char *)reg [3];

cout << * c << endl;

但是当我试图将它打印出来时,我仍然会得到奇怪的值和字符 .

根据我的理解,整数等于4个字符 . 由于字符在技术上是一个字节而整数是4个字节 .

所以我将一个字符存储到我的整数数组中作为4个字节,但是当我将其拉出时,存在垃圾数据,因为我插入的字符只有一个字节,而索引的大小是4个字节 .

3 回答

  • 1

    你试过这个:

    char mem[100000];
    int reg[8];
    mem[36] = 'p';         // add char p to our 36th index of our char array
    reg[3] = (int)mem[36]; // store value of mem[36] into reg[3]
    char txt[16];
    sprintf(txt, "%c", reg[3]);  // assigns the value as a char to txt array
    cout<<txt<<endl;
    

    这打印出值'p'

  • 0

    你不应该't be using pointers here; it'足以使用 char

    char c = reg[3];
    cout << c << endl;
    

    但请注意,在尝试将 int 填充到 char 变量时,您可能会丢失信息 .

  • 0

    我不明白你的问题是什么 . 将char存储到int var中 . 您想要将其打印回来 - 只需将值转换为char并打印它

    #include <iostream>
    
    int main()
    {
        char mem[100];
    
        int reg[8];
    
        mem[36] = 'p';         // add char p to our 36th index of our char array
    
        // store value of mem[36] into reg[3]
        reg[3] = mem[36]; 
    
        // store value of mem[36] into reg[4] with cast
        reg[4] = static_cast<int>(mem[36]); 
    
        std::cout << static_cast<char>(reg[3]) << '\n';
        std::cout << static_cast<char>(reg[4]) << '\n';
    
    }
    
    /****************
     * Output
    $ ./test
    p
    p
    */
    

相关问题