在 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/