下面列出了com.google.protobuf.ByteString#iterator ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
static int compareByteStrings(final ByteString a, final ByteString b) {
final ByteString.ByteIterator left = a.iterator();
final ByteString.ByteIterator right = b.iterator();
while (left.hasNext() && right.hasNext()) {
final int c = Integer.compareUnsigned(left.nextByte(), right.nextByte());
if (c != 0) {
return c;
}
}
if (left.hasNext()) {
return 1;
}
if (right.hasNext()) {
return -1;
}
return 0;
}
int compare(ByteString a, ByteString b) {
ByteIterator itA = a.iterator();
ByteIterator itB = b.iterator();
while (itA.hasNext()) {
if (!itB.hasNext()) {
return -1;
}
int bA = itA.nextByte() & 0xff;
int bB = itB.nextByte() & 0xff;
int c = Integer.compare(bA, bB);
if (c != 0) {
return c;
}
}
if (itB.hasNext()) {
return 1;
}
return 0;
}
private String asHexString(ByteString id) {
ByteIterator iterator = id.iterator();
StringBuilder out = new StringBuilder();
while (iterator.hasNext()) {
byte b = iterator.nextByte();
out.append(HEXES.charAt((b & 0xF0) >> 4)).append(HEXES.charAt((b & 0x0F)));
}
return out.toString();
}
@Nullable
private ExperimentPayload deserializePayload(ByteString legacyExperimentPayload) {
try {
Iterator<Byte> byteIterator = legacyExperimentPayload.iterator();
byte[] payloadArray = new byte[legacyExperimentPayload.size()];
for (int index = 0; index < payloadArray.length; index++) {
payloadArray[index] = byteIterator.next();
}
return ExperimentPayload.parseFrom(payloadArray);
} catch (InvalidProtocolBufferException e) {
Log.d(TAG, "Payload was not defined or could not be deserialized.", e);
return null;
}
}
private String asHexString(ByteString id) {
ByteIterator iterator = id.iterator();
StringBuilder out = new StringBuilder();
while (iterator.hasNext()) {
byte b = iterator.nextByte();
out.append(HEXES.charAt((b & 0xF0) >> 4)).append(HEXES.charAt((b & 0x0F)));
}
return out.toString();
}
public void testIterator() throws Exception {
ByteString s1 = ByteString.copyFrom("foo".getBytes("UTF-8"));
ByteString s2 = ByteString.copyFrom("你好".getBytes("UTF-8"));
Iterator<Byte> i1 = s1.iterator();
Iterator<Byte> i2 = s2.iterator();
for (int i = 0; i < s1.size(); i++) {
assertEquals((Byte) s1.byteAt(i), i1.next());
}
for (int i = 0; i < s2.size(); i++) {
assertEquals((Byte) s2.byteAt(i), i2.next());
}
}