c++ - 在 char* 中存储整数

标签 c++ c apache-zookeeper

我是初学者,正在尝试一些东西。我如何将整数数组传递给在 c/c++ 中需要 char* 的函数,因为 char 的范围仅为 -128 到 127,但我想存储整个整数范围内的数字。

这是我正在尝试的:

#include<stdlib.h>
#include<stdio.h>

int size = 12;

void print(char* array){

    int i,j;
    for(i=0;i<size;i++)
        for(j=0;j<size;j++)
            printf("%d ",*(array+i*size+j));

    printf("\n");
}

int main(){

    int array[size][size];
    int i=0,j=0,k=0;

    for(i=0;i<size;i++)
        for(j=0;j<size;j++)
            array[i][j]=k++;

    for(i=0;i<size;i++)
        for(j=0;j<size;j++)
            printf("%d ",array[i][j]);

    printf("\n");    

    print((char *) array);

    return 0;
}

当 array 在 main 函数中打印时,输出是正确的(数字 0-143)但在 print() 函数中,输出是

0 0 0 0 1 0 0 0 2 0 0 0 3 0 0 0 4 0 0 0 5 0 0 0 6 0 0 0 7 0 0 0 8 0 0 0 9 0 0 0 10 0 0 0 11 0 0 0 12 0 0 0 13 0 0 0 14 0 0 0 15 0 0 0 16 0 0 0 17 0 0 0 18 0 0 0 19 0 0 0 20 0 0 0 21 0 0 0 22 0 0 0 23 0 0 0 24 0 0 0 25 0 0 0 26 0 0 0 27 0 0 0 28 0 0 0 29 0 0 0 30 0 0 0 31 0 0 0 32 0 0 0 33 0 0 0 34 0 0 0 35 0 0 0

我不知道我做错了什么。

附言我需要这个,因为我使用的是 apache Zookeeper,它的 set 和 get 函数需要 char* 类型的参数作为数据。

最佳答案

在使用 e.g. 时,您可以使用任何数组或指针的方式相同。 send对于套接字:您转换指针。

喜欢

int data[DATA_SIZE];

...

send(s, (const char *) data, sizeof(data), 0);

这很常见,因为许多函数都采用指向 char 的指针,即使对于通用数据也是如此。最大的问题是函数对数据做什么

关于c++ - 在 char* 中存储整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25303837/

相关文章:

unit-testing - 使用Zookeeper在hadoop minicluster中负载均衡hiveserver2

c++ - Boost 仅序列化 std::wstring 的第一个字符

c - 当 for 循环的条件部分有多个用逗号分隔的表达式时会发生什么?

c - 为什么只有[☓]按钮是灰色的,而[☐]和[—]按钮不是?

c - C语言中如何修改字符串

apache-kafka - 错误启动卡夫卡服务器 : "**Different application** unexpected at this time"

c++ - 指向成员的指针

c++ - 函数返回数组但输出不符合预期

c++ - 二叉搜索树 - 获取最重路径算法 C++

docker - Zookeeper重新启动后,Kafka群集丢失消息