矢量或数组值插入
vector or array value insertion
我有一个变量
long long int alpha;
这个alpha
基本上是8个字节
但我希望字节大小可以通过函数的输入动态决定。
这样它就可以插入到 char*
数组中。
如果有函数
int putInput(int sizeOfAlpha){
long long int alpha;
char* beta = (char*)malloc(128);
for(int i = 0 ; i < 128 ; i++){
... alpha calculation ...
beta[i*sizeOfAlpha] = alpha; // This is also wrong
}
}
然后 alpha 的大小必须修改 sizeOfAlpha
例如,如果 sizeOfAlpha
是十进制的 2
,
如果 alpha
是十六进制的 0x00 00 00 00 00 00 04 20
,
如果 i
是 0
,
那么 beta[0]
应该是 04
并且 beta[1]
应该是十六进制的 20
如果 alpha
是十六进制的 0x00 00 00 00 00 00 42 AB
,
如果 i
是 1
,
那么 beta[2]
应该是 42
而 beta[3]
应该是十六进制的 AB
谁能帮我解决这个问题?
假设 alpha
是无符号的:
std::vector<std::uint8_t> vec(8);
for(std::size_t j = (i + 1u) * sizeOfAlpha - 1u; sizeOfAlpha; --j, --sizeOfAlpha) {
vec[j] = alpha & 0xff;
alpha >>= 8;
}
我有一个变量
long long int alpha;
这个alpha
基本上是8个字节
但我希望字节大小可以通过函数的输入动态决定。
这样它就可以插入到 char*
数组中。
如果有函数
int putInput(int sizeOfAlpha){
long long int alpha;
char* beta = (char*)malloc(128);
for(int i = 0 ; i < 128 ; i++){
... alpha calculation ...
beta[i*sizeOfAlpha] = alpha; // This is also wrong
}
}
然后 alpha 的大小必须修改 sizeOfAlpha
例如,如果 sizeOfAlpha
是十进制的 2
,
如果 alpha
是十六进制的 0x00 00 00 00 00 00 04 20
,
如果 i
是 0
,
那么 beta[0]
应该是 04
并且 beta[1]
应该是十六进制的 20
如果 alpha
是十六进制的 0x00 00 00 00 00 00 42 AB
,
如果 i
是 1
,
那么 beta[2]
应该是 42
而 beta[3]
应该是十六进制的 AB
谁能帮我解决这个问题?
假设 alpha
是无符号的:
std::vector<std::uint8_t> vec(8);
for(std::size_t j = (i + 1u) * sizeOfAlpha - 1u; sizeOfAlpha; --j, --sizeOfAlpha) {
vec[j] = alpha & 0xff;
alpha >>= 8;
}