A resource allocation method, comprising: receiving (S210), by a terminal device , resource allocation information from a network device , wherein the resource allocation information relates to an allocation of resources in an uplink transmission and is used to indicate a first resource; determining (S220), by the terminal device , a second resource based on the resource allocation information and an offset value, wherein the offset value indicates a quantity M of resource units that offset from a start location of the first resource relative to a start location of the second resource, and the offset value is predefined or configured by using higher layer signaling, wherein M ≥1; and sending (S230), by the terminal device , uplink data to the network device on the second resource, wherein a resource indicator value RIV, the start location RB START of the second resource, a quantity P of resource unit groups, and the offset value M meet the following relationship: when P − 1 ≤ ⌊ N / 2 ⌋ , RIV = N P − 1 + RB START − M / X ; or when P − 1 > ⌊ N / 2 ⌋ , RIV = N N − P + 1 + N − 1 − RB START − M / X , wherein RIV indicates the resource indicator value that is comprised in the resource allocation information and that is used to indicate the first resource; N = └ QlX ┘ , Q is a quantity of resource units that corresponds to the system bandwidth, Q is an integer greater than 1, and X is an integer greater than 2; and P indicates the quantity of resource unit groups comprised in the second resource, and each of the P resource unit groups comprises X resource units, wherein 1≤ P ≤[ N -( RB START -M ) X ]. receiving (S210), by a terminal device , resource allocation information from a network device , wherein the resource allocation information relates to an allocation of resources in an uplink transmission and is used to indicate a first resource; determining (S220), by the terminal device , a second resource based on the resource allocation information and an offset value, wherein the offset value indicates a quantity M of resource units that offset from a start location of the first resource relative to a start location of the second resource, and the offset value is predefined or configured by using higher layer signaling, wherein M ≥1; and sending (S230), by the terminal device , uplink data to the network device on the second resource, wherein a resource indicator value RIV, the start location RB START of the second resource, a quantity P of resource unit groups, and the offset value M meet the following relationship: when P − 1 ≤ ⌊ N / 2 ⌋ , RIV = N P − 1 + RB START − M / X ; or when P − 1 > ⌊ N / 2 ⌋ , RIV = N N − P + 1 + N − 1 − RB START − M / X , wherein RIV indicates the resource indicator value that is comprised in the resource allocation information and that is used to indicate the first resource; N = └ QlX ┘ , Q is a quantity of resource units that corresponds to the system bandwidth, Q is an integer greater than 1, and X is an integer greater than 2; and P indicates the quantity of resource unit groups comprised in the second resource, and each of the P resource unit groups comprises X resource units, wherein 1≤ P ≤[ N -( RB START -M ) X ]. <EOS>