我需要在JavaCard上保存变量。 Javacard不支持Strings,所以我必须将一些String变量硬编码为字节数组。 不幸的是,我不知道如何实现这种格式:
new byte[]{0x4A, 0x61, 0x6E, 0x20, 0x56, 0x6F, 0x73, 0x73, 0x61, 0x65, 0x72, 0x74};
是否有可用的在线工具?或者是否有一个程序以这种方式输出它以便我可以复制粘贴输出并将其用于硬编码?
答案 0 :(得分:2)
你不需要任何工具。如果你想在applet开发步骤中存储一个字符串(我的意思是在编程阶段),请使用如下的字节数组:
public static byte[] myFiled = {(byte)'T', (byte)'E', (byte)'S', (byte)'T'};
或使用十六进制值而不是字母:
public static byte[] myFiled = {(byte)0x10, (byte)0x11, (byte)0x12, (byte)0x13};
必须将数组元素明确地转换为字节
如果你想在开发安装applet之后存储字符串,首先使用this online tool for example将其转换为十六进制值,然后将其发送到APDU命令的数据字段中的卡。然后使用arrayCopy
或arrayCopyNonAtomic
方法将其存储在您的字节数组中。
答案 1 :(得分:1)
只需使用String::getBytes()
:
String a = "HelloWorld";
byte[] inBytes = a.getBytes();
System.out.println(Arrays.toString(inBytes));
<强>输出:强>
[72, 101, 108, 108, 111, 87, 111, 114, 108, 100]
ADD ON:如@AndyTurner所述,您可以使用String::getBytes(Charset)
指定字符集。
找到here一个很好的解释。