gRPC - Protocol Buffers データ型 メモ

More than 1 year has passed since last update.


はじめに

しっかりと翻訳したり使い方を補足説明するものではありません。

自分が見やすいように言語ごとにテーブルを分けただけのものになります。

引用元の情報は下記リンクから。

参考)Language Guide (proto3) - Scalar Value Types


Java

.proto
Notes
Java

double
8byte小数。
double

float
4byte小数。
float

int32
0以上の整数ならこっち。(符号付)
int

int64
0以上の整数ならこっち。(符号付)
long

uint32
0以上の整数ならこっち。(符号なし)
int

uint64
0以上の整数ならこっち。(符号なし)
long

sint32
負の値があるときはこっちが効率的。
int

sint64
負の値があるときはこっちが効率的。
long

fixed32
4byte固定。 228を超える値の時unit32よりも効率的になることがある。
int[1]

fixed64
8byte固定。 256を超える値の時unit64よりも効率的になることがある。
long[1]

sfixed32
4byte固定。
int

sfixed64
8byte固定。
long

bool
真偽値。
boolean

string
UTF-8またはASCIIの文字情報。
String

bytes
任意のバイトシーケンス。
ByteString

[1] Javaでは、符号なしの32ビットおよび64ビットの整数は、符号付きの対応部分を使用して表され、最上位ビットは単純に符号ビットに格納されます。


C++

.proto
Notes
C++

double
8byte小数。
double

float
4byte小数。
float

int32
0以上の整数ならこっち。(符号付)
int32

int64
0以上の整数ならこっち。(符号付)
int64

uint32
0以上の整数ならこっち。(符号なし)
uint32

uint64
0以上の整数ならこっち。(符号なし)
uint64

sint32
負の値があるときはこっちが効率的。
int32

sint64
負の値があるときはこっちが効率的。
int64

fixed32
4byte固定。 228を超える値の時unit32よりも効率的になることがある。
uint32

fixed64
8byte固定。 256を超える値の時unit64よりも効率的になることがある。
uint64

sfixed32
4byte固定。
int32

sfixed64
8byte固定。
int64

bool
真偽値。
bool

string
UTF-8またはASCIIの文字情報。
string

bytes
任意のバイトシーケンス。
string


Python

.proto
Notes
Python[2]

double
8byte小数。
float

float
4byte小数。
float

int32
0以上の整数ならこっち。(符号付)
int

int64
0以上の整数ならこっち。(符号付)
int/long[3]

uint32
0以上の整数ならこっち。(符号なし)
int/long[3]

uint64
0以上の整数ならこっち。(符号なし)
int/long[3]

sint32
負の値があるときはこっちが効率的。
int

sint64
負の値があるときはこっちが効率的。
int/long[3]

fixed32
4byte固定。 228を超える値の時unit32よりも効率的になることがある。
int/long[3]

fixed64
8byte固定。 256を超える値の時unit64よりも効率的になることがある。
int/long[3]

sfixed32
4byte固定。
int

sfixed64
8byte固定。
int/long[3]

bool
真偽値。
bool

string
UTF-8またはASCIIの文字情報。
str/unicode[4]

bytes
任意のバイトシーケンス。
str

[2] In all cases, setting values to a field will perform type checking to make sure it is valid.

[3] 64-bit or unsigned 32-bit integers are always represented as long when decoded, but can be an int if an int is given when setting the field. In all cases, the value must fit in the type represented when set. See [2].

[4] Python strings are represented as unicode on decode but can be str if an ASCII string is given (this is subject to change).


Go

.proto
Notes
Go

double
8byte小数。
float64

float
4byte小数。
float32

int32
0以上の整数ならこっち。(符号付)
int32

int64
0以上の整数ならこっち。(符号付)
int64

uint32
0以上の整数ならこっち。(符号なし)
uint32

uint64
0以上の整数ならこっち。(符号なし)
uint64

sint32
負の値があるときはこっちが効率的。
int32

sint64
負の値があるときはこっちが効率的。
int64

fixed32
4byte固定。 228を超える値の時unit32よりも効率的になることがある。
uint32

fixed64
8byte固定。 256を超える値の時unit64よりも効率的になることがある。
uint64

sfixed32
4byte固定。
int32

sfixed64
8byte固定。
int64

bool
真偽値。
bool

string
UTF-8またはASCIIの文字情報。
string

bytes
任意のバイトシーケンス。
[]byte


Ruby

.proto
Notes
Ruby

double
8byte小数。
Float

float
4byte小数。
Float

int32
0以上の整数ならこっち。(符号付)
Fixnum or Bignum (as required)

int64
0以上の整数ならこっち。(符号付)
Bignum

uint32
0以上の整数ならこっち。(符号なし)
Fixnum or Bignum (as required)

uint64
0以上の整数ならこっち。(符号なし)
Bignum

sint32
負の値があるときはこっちが効率的。
Fixnum or Bignum (as required)

sint64
負の値があるときはこっちが効率的。
Bignum

fixed32
4byte固定。 228を超える値の時unit32よりも効率的になることがある。
Fixnum or Bignum (as required)

fixed64
8byte固定。 256を超える値の時unit64よりも効率的になることがある。
Bignum

sfixed32
4byte固定。
Fixnum or Bignum (as required)

sfixed64
8byte固定。
Bignum

bool
真偽値。
TrueClass/FalseClass

string
UTF-8またはASCIIの文字情報。
String (UTF-8)

bytes
任意のバイトシーケンス。
String (ASCII-8BIT)


C#

.proto
Notes
C#

double
8byte小数。
double

float
4byte小数。
float

int32
0以上の整数ならこっち。(符号付)
int

int64
0以上の整数ならこっち。(符号付)
long

uint32
0以上の整数ならこっち。(符号なし)
uint

uint64
0以上の整数ならこっち。(符号なし)
ulong

sint32
負の値があるときはこっちが効率的。
int

sint64
負の値があるときはこっちが効率的。
long

fixed32
4byte固定。 228を超える値の時unit32よりも効率的になることがある。
uint

fixed64
8byte固定。 256を超える値の時unit64よりも効率的になることがある。
ulong

sfixed32
4byte固定。
int

sfixed64
8byte固定。
long

bool
真偽値。
bool

string
UTF-8またはASCIIの文字情報。
string

bytes
任意のバイトシーケンス。
ByteString


PHP

.proto
Notes
PHP

double
8byte小数。
float

float
4byte小数。
float

int32
0以上の整数ならこっち。(符号付)
integer

int64
0以上の整数ならこっち。(符号付)
integer/string[5]

uint32
0以上の整数ならこっち。(符号なし)
integer

uint64
0以上の整数ならこっち。(符号なし)
integer/string[5]

sint32
負の値があるときはこっちが効率的。
integer

sint64
負の値があるときはこっちが効率的。
integer/string[5]

fixed32
4byte固定。 228を超える値の時unit32よりも効率的になることがある。
integer

fixed64
8byte固定。 256を超える値の時unit64よりも効率的になることがある。
integer/string[5]

sfixed32
4byte固定。
integer

sfixed64
8byte固定。
long

bool
真偽値。
boolean

string
UTF-8またはASCIIの文字情報。
string

bytes
任意のバイトシーケンス。
string

[5] Integer is used on 64-bit machines and string is used on 32-bit machines.