0

ハッシュをapdu回答として送信するAndroid上に構築されたNFCアプリケーションがあります。これは、ハッシュを送信するために Android アプリで使用するコードです。

@Override
    public byte[] processCommandApdu(byte[] arg0, Bundle arg1) {

        String hash = "e68d3f574009cbbe011150263634c5c0";

        return hash.getBytes(Charset.forName("UTF-8"));

    }

Arduino 側で受信すると、次の RAW データが取得されます。

10154561005110253555248485799989810148494949534850255255255255255255255255255

そこからハッシュを取り戻すにはどうすればよいですか?

これは私が今持っているものですが、明らかに機能していません:

        uint8_t response[32];

        uint8_t responseLength = sizeof(response);

        if (nfc.inDataExchange(message, sizeof(message), response, &responseLength)) {

            Serial.print("RAW: ");
            for (int i = 0; i < sizeof(response); i++) {
                Serial.print(response[i]);
            }

            Serial.println(" ");

            char buffer[32];
            itoa((int)response,buffer,8);

            Serial.print("ITOA: ");
            for (int i = 0; i < sizeof(buffer); i++) {
                Serial.print(buffer[i]);
            }

            Serial.println(" ");
       }

そして、これは上記のコードのシリアル出力です:

RAW: 10154561005110253555248485799989810148494949534850255255255255255255255255255 
ITOA: 4253   µ      + 
  3ü       R    

ハーフ!!!

4

2 に答える 2

-1

わかりましたので、答えを見つけました。イトアはいらない。RAW 入力を char に型キャストするだけで、必要なものを取得できます。

            Serial.print("TYPECASTED RAW: ");
            for (int i = 0; i < sizeof(response); i++) {
                Serial.print((char)response[i]);
            }

            Serial.println(" ");

そしてそれは出力しました:

e68d3f574009cbbe0111502ÿÿÿÿÿÿÿÿÿ

なぜ最後の 9 文字が 255 文字に置き換えられているのでしょうか。

于 2013-11-26T04:01:19.463 に答える