0

我想将 Char 更改为具有相同位结构的 short 。两者都是16位

我知道,如果它们是我可以使用的 1s 补码,那么 short 是 2s 补码

if a < 0 {return (short) math.abs a + 2 ^ 15;} else {return (short) a;} //right?

我如何做到这一点,以 2s 补负?

我只是希望能够像操纵 Integer 一样操纵 Char 的内部结构。

如果答案只是添加一个,我会变得情绪化:)

4

1 回答 1

5

简单的解决方案是

char ch = ...
short s = (short) ch;
char ch2 = (char) s;
// ch == ch2

也许你想象它必须比它更复杂;)

我只是希望能够像操纵 Integer 一样操纵 Char 的内部结构。

在那种情况下,你甚至不需要 a short,你想要一个int更简单的。

例如

// sum all the chars of a string
String s = "Hello World";
int sum = 0;
for(char ch: s.toCharArray())
    sum += ch;

如果答案只是加一个,我会变得情绪化

不,甚至更少。:j

顺便说一句,你可以做

char ch = 'A';
int i = ch + 0;
int j = ch;
于 2013-02-01T16:39:40.920 回答