2

バイト配列を配列リストに挿入する正しい方法は何ですか?

private ArrayList<byte[]> bytes;

<property name="bytes">
<list>
    <value>0x03,0x4d</value>
</list>
</property>

すべての文字(0、x、0,3)が1バイトに変換されるため、機能しません。&#03;のようなエンコーディングも試しましたが、それも機能しません。

回避策の1つは、最初に整数に変換してから、Bean内のバイトに手動で変換し直すことですが、それはあまりきれいではありません。

何か案が?

よろしく

4

2 に答える 2

2

バイト配列を作成するための 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>

(a を登録するPropertyEditor方が正確ですが、より多くの作業が必要になります)


しかし、私があなたのコメントを正しく理解していれば、あなたの実際の問題は、エキゾチックなバイトで文字列を書く方法がわからないということですか? Unicode エスケープを使用できます。

System.out.println("H\u00e4\u00e4\u00e4\u00e4\u00e4hhh???");

出力:

はぁぁぁぁぁぁぁぁぁぁぁぁん???

もちろん、Spring XML ファイルでもこの​​構文を使用できます。

于 2011-02-23T09:03:58.643 に答える
2

組み込みの がありますがByteArrayPropertyEditor、Javadoc によると、文字列を対応するバイト配列に変換するだけです。

バイト配列のエディター。文字列は、対応するバイト表現に単純に変換されます。

の任意の表現をリストに変換する独自のプロパティ エディタを作成する必要があるのではないでしょうか。byte[]

于 2011-02-23T08:19:28.020 に答える