在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 *代替它,但是当我返回temp值时,我会得到null,因此我检查了这样的值,其中= b \ x04'b'= 98,x04 = 4我无法获取零数据,因此在转换回时我应如何管理剩余值?
         char* where = new char[10];
         where[0] = temp[3];
         where[1] = temp[2];
         where[2] = temp[1];
         where[3] = temp[0];
         where[4] = 0;

最佳答案



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

如果获取NULL,则将出现分段错误或类似错误。

08-25 01:37