Length of a UTF-8 byte sequence
Z80Golf, 19 14 bytes
00000000: 2f6f 3e10 37ed 6a3d 30fb ee07 c03c /o>.7.j=0....<
Try it online!
-5 bytes thanks to @Bubbler
Example with input 0x41-Try it online! Assembly
Example with input 0xC2-Try it online!
Example with input 0xE0-Try it online!
Example with input 0xF4-Try it online!
Assembly:
;input: register a
;output: register a
byte_count: ;calculate 7^(log2(255^a))||1
cpl ;xor 255
ld l,a
log2:
ld a,16
scf
log2loop:
adc hl,hl
dec a
jr nc,log2loop
xor 7
ret nz
inc a
Try it online!
Forth, 6 bytes
x-size
see https://forth-standard.org/standard/xchar/X-SIZE
Input and output follows a standard Forth model:
Input
Memory address + length (i.e. 1) of a single-byte UTF-8 "string".
Output
UTF-8 sequence length in bytes.
Sample Code
Store 0xF0 in a memory cell, and invoke x-size:
variable v
0xF0 v !
v 1 x-size
Check the result:
.s <1> 4 ok
C (gcc), 39 bytes
t(char x){x=(__builtin_clz(~x)-24)%7u;}
Try it online!