这里是一个FactoryBean创建您的字节数组:
public class ByteArrayFactoryBean extends AbstractFactoryBean<byte[]>{
@Override
public Class<?> getObjectType(){
return byte[].class;
}
private String data;
@Required
public void setData(final String data){
this.data = data;
}
@Override
protected byte[] createInstance() throws Exception{
final String[] tokens = data.split("\\s*,\\s*");
final byte[] output = new byte[tokens.length];
for(int i = 0; i < tokens.length; i++){
output[i] = Byte.decode(tokens[i]).byteValue();
}
return output;
}
}
用法:
<bean class="foo.bar.SomeBean">
<property name="bytes">
<list>
<bean class="foo.bar.ByteArrayFactoryBean">
<property name="data" value="0x03,0x4d" />
</bean>
</list>
</property>
</bean>
(注册一个PropertyEditor
会比较正确的,但也更多的工作)
但是如果我理解你的评论对,你的实际问题是你不知道如何写一个字符串与奇特的字节?您可以使用Unicode escapes:
System.out.println("H\u00e4\u00e4\u00e4\u00e4\u00e4hhh???");
输出:
Hääääähhh???
你当然也可以在Spring XML文件中使用这个语法。
“它只是将字符串转换成相应的字节数组” 那这个问题,因为我不知道如何为字符串类型STX(0x03h);) – foster 2011-02-23 09:02:38
你不能因为你有UTF-8编码XML文件虽然它适用于具有国家字符的字符串(例如中文),但不能使用任意字节。这就是为什么我建议你编写自定义属性编辑器,例如,读取Base64编码的字符串并将它们转换为字节。 – 2011-02-23 09:10:51