1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CBORメモ

Last updated at Posted at 2021-11-03

仕様

概要

IOTなどで使用を想定されるエンコード方式。軽量。
16進数のバイト配列がエンコードされた場合の状態。

実際の計量度合い

{"name":"山田太郎"}をエンコード

Base64 encode

JTdCJTIybmFtZSUyMjolMjIlRTUlQjElQjElRTclOTQlQjAlRTUlQTQlQUElRTklODMlOEUlMjIlN0Q

79bytes

CBOR encode

a1646e616d656ce5b1b1e794b0e5a4aae9838e

38bytes

テストサイト

cbor.meが死んでいるので、以下がオススメ。
https://cbor.nemo157.com/

各言語実装

JavaScriptサンプル

const json = "{\"aaa\":111}";
const buf2hex = (buffer: ArrayBuffer) => { // buffer is an ArrayBuffer
        return [...new Uint8Array(buffer)]
            .map(x => x.toString(16).padStart(2, '0'))
            .join('');
    }
const cbor = require('cbor-web')
buf2hex(cbor.encode(JSON.parse(json)) as ArrayBuffer)
a163616161186f

Javaサンプル

var json = "{\"aaa\":111}";
ObjectMapper om = new ObjectMapper();
Object object = om.readValue(json, Object.class);

CborObject cborObject = CborObject.createFromJavaObject(object);

log.info("{}", Base64.getEncoder().encode(cborObject.toCborByteArray()));
// Byte to Hex16
StringBuilder sb = new StringBuilder();
for (byte b : cborObject.toCborByteArray()) {
    sb.append(String.format("%02x", b));
}
log.info("{}", sb);
a163616161186f
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?