非法整数字符十六进制

问题描述:

我正在使用替换框的加密方案。给我使用了替代框,其中框中的每个元素(保存为数组)都是十六进制的(例如0xD1310BA6)。出于某种原因,我得到一个语法错误(我使用的是NetBeans),它说“非法字符”\ u00a0'“我不明白问题究竟是什么或者如何解决它。我试图改变数组类型为long,以防int不够大(很确定它是)还是char,因为它给了我一个关于字符的错误,但都没有解决问题。非法整数字符十六进制

这是我的一个S盒和一些使用S盒的代码的一部分,所以你明白我正在试图用它们做什么。

SBOX:

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)); 
} 

不包括的是我还没有写完它,将替代值(S盒(字节,INT))功能然而。

\ u00a0是一个不可破坏的空间。所以你不能在你的代码中看到它,因为它看起来像一个普通的空格字符,但它在某处,在错误信息所指示的行(可能是列)中。

清除该空间并将其替换为常规空格字符。

+0

哈哈是个多么愚蠢的错误。该死的我的教授没有正确格式化S盒。谢谢! – user2872777