我想在不进行任何转换的情况下将字符串值放入数组字节。字符串长度始终为14,它实际上是表示日期和时间的十六进制值。所以这个字符串中每2个字符是一个字节,所以我的字节数组的长度是7个字节。我没有找到这样做的方法。string.getBytes()
方法正在进行转换。我也尝试过这种方法https://stackoverflow.com/a/11208685/3343174 但在调试之后,它会显示与第一个字符串不同的值。
假设要将十六进制字符串转换为字节[]。e、 g.您有14个十六进制字符,您希望将其转换为字节,其中两个字符表示每个字节。
例如,字符串中的前四个字符是“07df”,我希望字节数组中的前两个字节分别包含“07”和“df”
String base16 = "07df07df07df07";
byte[] bytes = new BigInteger(base16, 16).toByteArray();
if (bytes[0] == 0)
bytes = Arrays.copyOfRange(bytes, 1, bytes.length);
System.out.println(Arrays.toString(bytes));
印刷品
[7, -33, 7, -33, 7, -33, 7]
我想得到[07,df,07,df,07,df,07]
这是一个将字节[]
格式化为所需格式的问题<代码>(字节)0xDF是-33
数字只是数字,它们不记得您创建它们时使用的格式,它们只有一种默认格式,如果您不喜欢,可以添加自己的格式。
StringBuilder sb = new StringBuilder();
String sep = "[";
for (byte b : bytes) {
sb.append(sep).append(String.format("%02x", b & 0xFF));
sep = ", ";
}
sb.append("]");
System.out.println(sb);
印刷品
[07, df, 07, df, 07, df, 07]
您可以得到字符串的两个字符的子串,如下所示:
String yourString = "07df";
String firstByteAsString = yourString.substring(0,2); // start - end(excl.)
// = "07"
您可以这样从中获得一个字节:
byte b = Byte.parseByte( firstByteAsString, 16 );
我相信,您将设法使用它来获得所需的功能。
编辑彼得指出:价值观
byte b = (byte) (Integer.parseInt( firstByteAsString, 16) & 0xFF);
但他的答案要简单得多,而且是为了你。你应该选择BigInteger并接受Peter的答案。
PS:UTF-8不能工作,因为它转换了一些不同值的字节。我测试了,它不起作用。 PS2:不,我不想要。
问题内容: 我有一个一维String数组,我想将其转换为一维字节数组。我该怎么做呢?这需要ByteBuffer吗?我怎样才能做到这一点?(字符串可以是任意长度,只想知道如何执行这样的操作。将其转换为字节数组后,如何将其转换回String数组? -担 问题答案: 数组到数组 ,应该 手动 将其转换为两边,但是如果只有一个String,则可以和; 像这样 对于string []中的一个字节[],您必须
问题内容: 我有以下代码,我试图通过测试,但似乎无法理解Java世界中各种编码形式。 我想我的问题是:将任意字节的字节数组转换为Java字符串,然后将同一Java String转换为另一个字节数组的正确方法是什么,该字节数组将具有与原始字节相同的长度和相同的内容数组? 问题答案: 尝试特定的编码: ideone链接
问题内容: 如何将Java字符串转换为ASCII字节数组? 问题答案: 使用该方法,为其指定适当的名称(或名称)。 例: (Java 7的前:)
我得到一个错误读数:
我得到了20字节的输入。使用的字符集是UTF-8 当我把它转换成字符串时,我看到0000000000000000000000000000000000000000 这是正确的。 但当我把它转换成字符串时,我得到一个空值。我怀疑字符集有问题,但即使尝试了不同的字符集,我也无法返回值“0”。 我试图改变字符集,但没能解决它,任何我可能缺少的线索。 US-ASCII ISO-8859-1 UTF-8 UT