java到C/C++(carbide c/c++)转换

标签 java c++ c symbian

在 Java 中:

值 = 1122;

public static final byte[] intToByteArray(int value) {
        return new byte[] {
                (byte)(value >>> 24),
                (byte)(value >>> 16),
                (byte)(value >>> 8),
                (byte)value};
    }

  public static int byteArrayToInt(byte[] data) {
        return (int)(
                (int)(0xff & data[0]) << 24  |
                (int)(0xff & data[1]) << 16  |
                (int)(0xff & data[2]) << 8   |
                (int)(0xff & data[3]) << 0
        );
    }

这里它会返回 [0, 0, 4, 98] 所以在 C:

char* intToByteArray(int value){
        char* temp = new char[4];
         temp[0] = value >> 24,
         temp[1] = value >> 16,
         temp[2] = value >> 8, 
         temp[3] = value;
         return temp;
} 

因为 c 中没有字节数据类型,我们可以使用 char* 代替它,但是当我返回临时值时,我得到的是空值,所以我检查了这样的值 where = b\x04 'b'= 98, x04 = 4 i我无法获取零数据,因此在转换回来时我应该如何管理剩余值??

         char* where = new char[10];
         where[0] = temp[3];
         where[1] = temp[2];
         where[2] = temp[1];
         where[3] = temp[0];
         where[4] = 0;

最佳答案

i am getting null

不,你不是。您得到的第一个字节是 \0 nul 字节。当您将其打印为文本字符串时,它将终止该字符串。但它不是一个字符串,它是一个字节数组。

如果你得到一个 NULL,你会得到一个段错误或类似的错误。

关于java到C/C++(carbide c/c++)转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11829301/

相关文章:

java - 哪种更好的方式通过 Tomcat 提供文件(用于下载)?

java - NOT 和 AND 在正则表达式中一起运算以匹配不包括 -0.0 的数字(如 1.0、-3、-3.0)

c++ - 如何制作一个实例化类并将它们排序在地址列表中的循环?

c++ - 如何将工厂模式与代码灵活性结合起来

java - Java中静态 block 的必要性

java - java swing对象之间的细微差别

c++ - 我需要将什么时间函数与 pthread_cond_timedwait 一起使用?

c - 为什么这个字符串不会溢出缓冲区?

c++ - 如何在 C++ 项目中使用 sqlite3.c?

c - 找到最大的素数因子?