A resource allocation method in a time division duplex, TDD, system, comprising: receiving, by a terminal device, downlink control information from a network device, wherein the downlink control information comprises a resource allocation field, and when a system bandwidth is 25, 50, 75, or 100 resource blocks, the resource allocation field comprises 7 bits, 8 bits, 9 bits, or 9 bits respectively, wherein when the resource allocation field indicates, based on a first resource allocation scheme, resource allocation in an uplink bandwidth, ⌈ log 2 ⌊ N RB UL 6 ⌋ ⌉ bits in ⌈ log 2 ⌊ N RB UL 6 ⌋ ⌉ + 5 bits of the resource allocation field indicate a narrowband index in the uplink bandwidth, the 5 bits in the ⌈ log 2 ⌊ N RB UL 6 ⌋ ⌉ + 5 bits of the resource allocation field indicate resource allocation in a narrowband for the terminal device, and a length of consecutive resource blocks allocated in the narrowband is N, wherein 1≤N≤6, and N RB UL indicates a quantity of resource blocks comprised in the uplink bandwidth; when the resource allocation field indicates, based on a second resource allocation scheme, resource allocation in an uplink bandwidth, the resource allocation field indicates a first resource indication value; when the terminal device determines, based on the second resource allocation scheme, resources allocated by the network device, determining, by the terminal device, the first resource indication value based on the resource allocation field; determining, by the terminal device based on the first resource indication value, a starting resource block allocated in the uplink bandwidth and a length L CRBs of consecutive resource blocks allocated in the uplink bandwidth, wherein M≤L CRBs ≤6, and M is a positive integer greater than 1; and sending, by the terminal device, data on resources corresponding to the starting resource block and the length of the consecutive resource blocks. receiving, by a terminal device, downlink control information from a network device, wherein the downlink control information comprises a resource allocation field, and when a system bandwidth is 25, 50, 75, or 100 resource blocks, the resource allocation field comprises 7 bits, 8 bits, 9 bits, or 9 bits respectively, wherein when the resource allocation field indicates, based on a first resource allocation scheme, resource allocation in an uplink bandwidth, ⌈ log 2 ⌊ N RB UL 6 ⌋ ⌉ bits in ⌈ log 2 ⌊ N RB UL 6 ⌋ ⌉ + 5 bits of the resource allocation field indicate a narrowband index in the uplink bandwidth, the 5 bits in the ⌈ log 2 ⌊ N RB UL 6 ⌋ ⌉ + 5 bits of the resource allocation field indicate resource allocation in a narrowband for the terminal device, and a length of consecutive resource blocks allocated in the narrowband is N, wherein 1≤N≤6, and N RB UL indicates a quantity of resource blocks comprised in the uplink bandwidth; when the resource allocation field indicates, based on a second resource allocation scheme, resource allocation in an uplink bandwidth, the resource allocation field indicates a first resource indication value; when the terminal device determines, based on the second resource allocation scheme, resources allocated by the network device, determining, by the terminal device, the first resource indication value based on the resource allocation field; determining, by the terminal device based on the first resource indication value, a starting resource block allocated in the uplink bandwidth and a length L CRBs of consecutive resource blocks allocated in the uplink bandwidth, wherein M≤L CRBs ≤6, and M is a positive integer greater than 1; and sending, by the terminal device, data on resources corresponding to the starting resource block and the length of the consecutive resource blocks.