Skip to content

Commit 12cb0b2

Browse files
committed
add to_bytes to int type
1 parent d7ad54a commit 12cb0b2

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/ints

‎graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/ints/IntBuiltins.java‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343

4444
import com.oracle.graal.python.builtins.Builtin;
4545
import com.oracle.graal.python.builtins.CoreFunctions;
46+
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
4647
import com.oracle.graal.python.builtins.PythonBuiltins;
4748
import com.oracle.graal.python.builtins.objects.PNone;
4849
import com.oracle.graal.python.builtins.objects.PNotImplemented;
@@ -1767,4 +1768,26 @@ Object doGeneric(@SuppressWarnings("unused") Object self) {
17671768
return PNotImplemented.NOT_IMPLEMENTED;
17681769
}
17691770
}
1771+
1772+
@Builtin(name = "to_bytes", minNumOfArguments = 1, maxNumOfArguments = 2)
1773+
@GenerateNodeFactory
1774+
abstract static class ToBytesNode extends PythonBuiltinNode {
1775+
@Specialization
1776+
PBytes doInt(int self, int length) {
1777+
byte[] bytes = new byte[length];
1778+
for (int i = 0 ; i < length; i++) {
1779+
bytes[i] = (byte) ((self >> i) & 0xFF);
1780+
}
1781+
return factory().createBytes(bytes);
1782+
}
1783+
1784+
@Specialization
1785+
PBytes doLong(long self, int length) {
1786+
byte[] bytes = new byte[length];
1787+
for (int i = 0 ; i < length; i++) {
1788+
bytes[i] = (byte) ((self >> i) & 0xFF);
1789+
}
1790+
return factory().createBytes(bytes);
1791+
}
1792+
}
17701793
}

0 commit comments

Comments
 (0)