Java 如何将一个int分解为两个字符

Java 如何将一个int分解为两个字符,java,c,Java,C,这是一个遗留系统,所以请不要告诉我我试图做的是错误的。必须是这样 我有一个字节数组,其中日期是按顺序排列的。这很好,直到我想存储一个大于255的值。为此,我需要使用2个字节作为16位值 所以我需要把一个int转换成两个字符,然后把这两个字符转换成int 一个程序是C语言,另一个是Java语言,它们通过字节数组进行通信 在我看来,这是一个很久以前就应该解决的问题,所以我想知道Java和C库中是否有这样做的函数。如果没有,有没有一种简单的转换方法?据我所知,你只是在做基础数学 我已经有一段时间没有编

这是一个遗留系统,所以请不要告诉我我试图做的是错误的。必须是这样

我有一个字节数组,其中日期是按顺序排列的。这很好,直到我想存储一个大于255的值。为此,我需要使用2个字节作为16位值

所以我需要把一个int转换成两个字符,然后把这两个字符转换成int

一个程序是C语言,另一个是Java语言,它们通过字节数组进行通信


在我看来,这是一个很久以前就应该解决的问题,所以我想知道Java和C库中是否有这样做的函数。如果没有,有没有一种简单的转换方法?

据我所知,你只是在做基础数学

我已经有一段时间没有编写c程序了,所以不要理会任何旧的术语

int original_number = 300; // A number over 255
char higher_char, lower_char; // the 2 numbers/chars you are trying to get
higher_char = original_number / 256;
lower_char = original_number % 256;
然后像平常一样打印高字符和低字符

[编辑

和转换回来

char higher_char, lower_char; // The two chars you have in order
int number_to_restore; // The original number you are trying to get back to
number_to_restore =  higher_char * 256 + lower_char;
]

因此,使用二进制运算符,这将变成:

int mask = 0xFF;
int original_number = 300; // A number over 255
char higher_char, lower_char; // the 2 numbers/chars you are trying to get
higher_char = (original_number >> 8) & mask;
lower_char = original_number & mask;
恢复呢

char higher_char, lower_char; // The two chars you have in order
int number_to_restore; // The original number you are trying to get back to
number_to_restore =  (higher_char << 8) | lower_char;
char较高的字符,较低的字符;//你的两个角色都排好了
int number_to_restore;//您试图返回的原始号码

number_to_restore=(更高的字符您也可以使用
biginger

    byte[] bytes = BigInteger.valueOf(x).toByteArray();
    int y = new BigInteger(bytes).intValue();

这就是我在C语言中所做的

uint16_t value;
uint8_t  chars[2];

value = 280;

/* to bytes array */

chars[0] = value & 0xFF;
chars[1] = (value >> 8) & 0xFF;

/* back */

value = chars[0] | (chars[1] << 8);
uint16\t值;
uint8_t chars[2];
数值=280;
/*到字节数组*/
字符[0]=值&0xFF;
字符[1]=(值>>8)&0xFF;
/*背*/

值=字符[0]|(字符[1]您需要转换两个字节还是两个字符?我不确定OP想要什么。Java字符已经是16位了。虽然
/256
%256
是正确的,但当使用位操作编写代码时,代码会更明显,即
>8
&0xFF
分别。是的,在编写代码时将编辑内容输入即可r注释。只是想让它显式。我投了反对票,因为:一个两字节的整数可以有大约值-32k…+32k,这意味着7个字符串。但是,如果目的是获取一个2字节的整数并将其按原样放入一个字节数组中,那么上面的方法就行了。但是,仍然需要考虑尾数。是的,4是错误的,它需要是8(见上面我的答案)。这假设
字符位==8
,这是不能保证的。它还使用有符号移位,这可能会导致未定义的行为。@如果现在没有,当然你完全正确,我并没有修复它,而是为了网站质量。尽管很难相信一个被否决的答案:)OP寻找的是C代码,而不是javacode@user3629249似乎两者都想要。