Str = test
The results are not the same I do not know why.
int[] inData = getInt(Str.getBytes("**unicode**"));
for (int i = 0; i < inData.length; i++) {
System.out.println("====EncryStrHex==inData[i]==" + inData[i]);
}
*========*******Encryints====-2
========*******Encryints====-1
========*******Encryints====0
========*******Encryints====116
========*******Encryints====0
========*******Encryints====101
========*******Encryints====0
========*******Encryints====115
========*******Encryints====0
========*******Encryints====116*
byte[] inData = Encoding.**Unicode**.GetBytes(Str);
for (int i = 0; i < inData.Length; i++) {
Console.WriteLine("====EncryStrHex==inData[i]==" + inData[i]);
}
*========*******Encryints====116
========*******Encryints====0
========*******Encryints====101
========*******Encryints====0
========*******Encryints====115
========*******Encryints====0
========*******Encryints====116
========*******Encryints====0*
答案 0 :(得分:2)
此处似乎存在两个问题(不包括示例无法实际生成输出的方式)。
您的java示例使用UTF16(big endian)编码数据,而C#示例使用UTF16,little endian,它解释了零字节的不同位置。
您的java示例在数据前面加上BOM(0xFFFE)字节顺序标记,用于显示使用的UTF编码。 UTF 8,16(BE和LE)和32(BE和LE)都为该字符生成不同的字节序列。关于这是否是一个好主意存在争论。