Skip to content

Commit

Permalink
modify encodePacked Utf8String
Browse files Browse the repository at this point in the history
Signed-off-by: hamburger <[email protected]>
  • Loading branch information
xutruth committed Apr 23, 2024
1 parent 7f999b6 commit b1ad81b
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion abi/src/main/java/org/web3j/abi/TypeEncoder.java
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,10 @@ public static String encode(Type parameter) {
*/
public static String encodePacked(Type parameter) {
if (parameter instanceof Utf8String) {
return removePadding(encode(parameter), parameter);
//removePadding can also be used, but is not necessary
return Numeric.toHexStringNoPrefix(((Utf8String) parameter).getValue().getBytes(StandardCharsets.UTF_8));
} else if (parameter instanceof DynamicBytes) {
//removePadding can also be used, but is not necessary
return Numeric.toHexStringNoPrefix(((DynamicBytes) parameter).getValue());
} else if (parameter instanceof DynamicArray) {
return arrayEncodePacked((DynamicArray) parameter);
Expand Down Expand Up @@ -140,6 +142,9 @@ static String removePadding(String encodedValue, Type parameter) {
int length =
((Utf8String) parameter).getValue().getBytes(StandardCharsets.UTF_8).length;
return encodedValue.substring(64, 64 + length * 2);
}
if (parameter instanceof DynamicBytes) {
return encodedValue.substring(64, 64 + ((DynamicBytes) parameter).getValue().length * 2);
} else {
throw new UnsupportedOperationException(
"Type cannot be encoded: " + parameter.getClass());
Expand Down

0 comments on commit b1ad81b

Please sign in to comment.