十六进制的非法整数字符
Illegal Integer Character in Hexadecimal
我正在研究使用替换框的加密方案。我得到了要使用的替换框,其中框中的每个元素(保存为数组)都是十六进制的(例如 0xD1310BA6)。出于某种原因,我收到一个语法错误(我使用的是 NetBeans),上面写着 "illegal character '\u00a0'" 我不明白问题到底是什么或如何解决它。我尝试将数组类型更改为 long 以防 int 不够大(很确定它是)或 char 因为它给我一个关于字符的错误,但都没有解决问题。
这是我的一个 S-Box 的一部分,以及一些使用 S-Box 的代码,以便您了解我要用它们做什么。
S-Box:
final public int[] SBox1 = {
0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,
0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,
0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,
0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,
0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,
0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,
0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,
0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,
};
相关代码:
public int Feistel(int x) {
int f1 = SBox((byte) (x & 0xFF), 1);
int f2 = SBox((byte) ((x >>> 8) & 0xFF), 2);
int f3 = SBox((byte) ((x >>> 16) & 0xFF), 3);
int f4 = SBox((byte) ((x >>> 24) & 0xFF), 4);
return (int) ((((int) (f1 + f2 % Math.pow(2, 32)) ^ f3) + f4) % Math.pow(2, 32));
}
不包括将替换值 (SBox(byte, int)) 的函数,因为我还没有写完它。
\u00a0 是一个牢不可破的 space。所以你在你的代码中看不到它,因为它看起来像一个普通的 space 字符,但它在某处,在错误消息指示的行(可能是列)中。
删除 space 并用常规 space 字符替换它。
我正在研究使用替换框的加密方案。我得到了要使用的替换框,其中框中的每个元素(保存为数组)都是十六进制的(例如 0xD1310BA6)。出于某种原因,我收到一个语法错误(我使用的是 NetBeans),上面写着 "illegal character '\u00a0'" 我不明白问题到底是什么或如何解决它。我尝试将数组类型更改为 long 以防 int 不够大(很确定它是)或 char 因为它给我一个关于字符的错误,但都没有解决问题。
这是我的一个 S-Box 的一部分,以及一些使用 S-Box 的代码,以便您了解我要用它们做什么。
S-Box:
final public int[] SBox1 = {
0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,
0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,
0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,
0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,
0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,
0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,
0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,
0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,
};
相关代码:
public int Feistel(int x) {
int f1 = SBox((byte) (x & 0xFF), 1);
int f2 = SBox((byte) ((x >>> 8) & 0xFF), 2);
int f3 = SBox((byte) ((x >>> 16) & 0xFF), 3);
int f4 = SBox((byte) ((x >>> 24) & 0xFF), 4);
return (int) ((((int) (f1 + f2 % Math.pow(2, 32)) ^ f3) + f4) % Math.pow(2, 32));
}
不包括将替换值 (SBox(byte, int)) 的函数,因为我还没有写完它。
\u00a0 是一个牢不可破的 space。所以你在你的代码中看不到它,因为它看起来像一个普通的 space 字符,但它在某处,在错误消息指示的行(可能是列)中。
删除 space 并用常规 space 字符替换它。