Làm cách nào để chuyển đổi chuỗi nhị phân như "010011101" thành int và cách chuyển đổi int, như 5 thành chuỗi "101" trong C?Chuyển đổi chuỗi định dạng nhị phân thành int, trong C
Trả lời
Nếu nó là một vấn đề bài tập về nhà có lẽ họ muốn bạn để thực hiện strtol
, bạn sẽ có một cái gì đó vòng lặp như thế này:
char* start = &binaryCharArray[0];
int total = 0;
while (*start)
{
total *= 2;
if (*start++ == '1') total += 1;
}
Nếu bạn muốn nhận được ưa thích bạn có thể sử dụng các trong vòng lặp: "? trong C "
total <<= 1;
if (*start++ == '1') total^=1;
tìm thấy giải pháp thậm chí còn ưa thích hơn .. 'trong khi (len--) {ret = (ret << 1) | (* bits ++ & 1);} ' –
Các strtol
chức năng trong thư viện chuẩn có một "cơ sở" tham số, mà trong trường hợp này sẽ là 2.
int fromBinary(const char *s) {
return (int) strtol(s, NULL, 2);
}
(mã C đầu tiên tôi đã viết trong khoảng 8 năm :-)
@Pointy: Mã đẹp sau 8 năm: P :) – t0mm13b
Trong C, không có sẵn chữ "null". Có một macro, NULL, do đó, nó cần phải được trên cased. Ngoài ra, đối số chuỗi phải được tạo thành "const", vì hàm sẽ không sửa đổi nó. – unwind
ồ phải. Tôi, tôi có thể đã sử dụng "0" sau khi trình biên dịch nói với tôi về lỗi :-) – Pointy
Tôi đoán nó thực sự phụ thuộc vào một số câu hỏi về chuỗi/chương trình của bạn. Nếu, ví dụ, bạn biết số của bạn sẽ không lớn hơn 255 (IE bạn chỉ sử dụng 8 bit hoặc 8 0s/1s), bạn có thể tạo một hàm mà bạn đưa nó 8 bit từ chuỗi của bạn, duyệt qua nó và thêm đến một khoản tiền mà bạn quay trở lại mỗi khi bạn nhấn 1. IE nếu bạn nhấn bit cho 2^7 thêm 128 và bit tiếp theo bạn nhấn là 2^4 thêm 16.
Đây là ý tưởng nhanh và dơ bẩn của tôi. Tôi nghĩ nhiều hơn và Google cho ya trong khi ở trường. : D
Đối với phần 2 của câu hỏi, tức là" làm thế nào để chuyển đổi một int, như 5, thành một chuỗi" 101, hãy thử một cái gì đó như:
void
ltostr(unsigned long x, char * s, size_t n)
{
assert(s);
assert(n > 0);
memset(s, 0, n);
int pos = n - 2;
while(x && (pos >= 0))
{
s[ pos-- ] = (x & 0x1) ? '1' : '0'; // Check LSb of x
x >>= 1;
}
}
Bạn có thể sử dụng mã hóa sau
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (void)
{
int nRC = 0;
int nCurVal = 1;
int sum = 0;
char inputArray[9];
memset(inputArray,0,9);
scanf("%s", inputArray);
// now walk the array:
int nPos = strlen(inputArray)-1;
while(nPos >= 0)
{
if(inputArray[nPos] == '1')
{
sum += nCurVal;
}
--nPos;
nCurVal *= 2;
}
printf("%s converted to decimal is %d\n", inputArray, sum);
return nRC;
}
Sử dụng như thế này:
char c[20];
int s=23;
itoa(s,c,2);
puts(c);
Output:
10111
Lưu ý:' itoa' là hàm C không chuẩn –
- 1. java: chuyển đổi chuỗi nhị phân thành int
- 2. Chuyển đổi một byte thành chuỗi nhị phân trong C#
- 3. Chuyển đổi chuỗi đại diện của số nhị phân thành int trong C#
- 4. Chuyển đổi chuỗi thập lục phân thành chuỗi nhị phân
- 5. Chuyển đổi chuỗi giữa định dạng thập phân và định dạng nhị phân
- 6. Chuyển đổi chuỗi nhị phân thành bigint trong MySQL?
- 7. Chuyển đổi tệp nhị phân thành chuỗi Base64
- 8. Chuyển đổi một int thành một biểu diễn chuỗi nhị phân trong Java?
- 9. Chuyển đổi hình ảnh thành nhị phân?
- 10. Làm thế nào để bạn chuyển đổi một chuỗi thành ascii thành nhị phân trong C#?
- 11. Chuyển đổi chuỗi nhị phân thành số nguyên
- 12. SQL Server Chuyển đổi số nguyên thành chuỗi nhị phân
- 13. Chuyển đổi Pythonic thành nhị phân?
- 14. Cách nhanh nhất để chuyển đổi chuỗi thành nhị phân?
- 15. Chuyển đổi từ nhị phân thành char trong C
- 16. Go - chuyển đổi chuỗi đại diện cho số nhị phân thành int
- 17. chuyển đổi số thập phân thành int trong C#
- 18. Chuyển đổi chuỗi thập lục phân thành int
- 19. C++ int chuỗi chuyển đổi
- 20. Chuyển đổi số thập phân thành nhị phân trong R?
- 21. Chuyển đổi chuỗi nhị phân thành mảng byte
- 22. chuyển đổi byte thành chuỗi C#
- 23. Chuyển đổi chuỗi thập lục phân (hex) thành một chuỗi nhị phân
- 24. Làm thế nào để chuyển đổi NSInteger thành giá trị nhị phân (chuỗi)
- 25. Chuyển chuỗi thành int-goal c
- 26. Định dạng chuỗi trong .NET: chuyển đổi số nguyên thành chuỗi có độ rộng cố định?
- 27. Làm cách nào để chuyển đổi chuỗi C++ thành int?
- 28. C# WPF chuyển đổi BitmapImage được dán vào richtextbox thành dạng nhị phân
- 29. chuyển đổi chuỗi thành định dạng java.util.date trong java
- 30. Chuyển đổi chuỗi thành định dạng ngày trong android
nửa đầu của câu hỏi là tại http://stackoverflow.com/ question/117844/conversion-string-of-1s-and-0s-into-binary-value – Jimmy