[英]Equivalent GetBytes function in Java like c#
将C#库移植到Java中时,我在将字符串转换为字节时遇到问题。 它转换字符串,但不是相同的字节数组。
我在C#中使用此代码
string input = "Test ěščřžýáíé 1234";
Encoding encoding = Encoding.UTF8;
byte[] data = encoding.GetBytes(input);
和Java代码
String input = "Test ěščřžýáíé 1234";
String encoding = "UTF8";
byte[] data = input.getBytes(encoding);
第一种是Java输出,右一种是C#如何使Java输出与C#相同?
这些数组很可能是相同的。
您会被C#和Java之间的巨大差异所折服:在Java中, byte
是unsigned 。
为了转储,请尝试此:
public void dumpBytesToStdout(final byte[] array)
{
for (final byte b: array)
System.out.printf("%02X\n", b);
}
并在C#中执行等效的转储方法(不知道如何,我不执行C#)
或者,如果转储函数涉及大于字节的整数类型(例如int),请执行以下操作:
i & 0xff
删除符号位。 请注意,如果强制转换字节-1,则其内容为:
1111 1111
到一个int,这不会给:
0000 0000 0000 0000 0000 0000 1111 1111
但:
1111 1111 1111 1111 1111 1111 1111 1111
即符号位是“ carry”(否则,强制转换将产生int值255,而不是-1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.